LCOV - code coverage report
Current view: top level - gcc/common/config/i386 - i386-common.cc (source / functions) Coverage Total Hit
Test: gcc.info Lines: 97.7 % 817 798
Test Date: 2026-07-11 15:47:05 Functions: 100.0 % 6 6
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /* IA-32 common hooks.
       2              :    Copyright (C) 1988-2026 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_AVX512DQ_SET \
      68              :   (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512F_SET)
      69              : #define OPTION_MASK_ISA_AVX512BW_SET \
      70              :   (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512F_SET)
      71              : #define OPTION_MASK_ISA_AVX512VL_SET \
      72              :   (OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512F_SET)
      73              : #define OPTION_MASK_ISA_AVX512IFMA_SET \
      74              :   (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512F_SET)
      75              : #define OPTION_MASK_ISA2_AVXIFMA_SET OPTION_MASK_ISA2_AVXIFMA
      76              : #define OPTION_MASK_ISA_AVX512VBMI_SET \
      77              :   (OPTION_MASK_ISA_AVX512VBMI | OPTION_MASK_ISA_AVX512BW_SET)
      78              : #define OPTION_MASK_ISA_AVX512VBMI2_SET \
      79              :   (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512BW_SET)
      80              : #define OPTION_MASK_ISA_AVX512FP16_SET OPTION_MASK_ISA_AVX512BW_SET
      81              : #define OPTION_MASK_ISA2_AVX512FP16_SET OPTION_MASK_ISA2_AVX512FP16
      82              : #define OPTION_MASK_ISA_AVX512VNNI_SET \
      83              :   (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512F_SET)
      84              : #define OPTION_MASK_ISA2_AVXVNNI_SET OPTION_MASK_ISA2_AVXVNNI
      85              : #define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET \
      86              :   (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512F_SET)
      87              : #define OPTION_MASK_ISA_AVX512BITALG_SET \
      88              :   (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512BW_SET)
      89              : #define OPTION_MASK_ISA2_AVX512BF16_SET OPTION_MASK_ISA2_AVX512BF16
      90              : #define OPTION_MASK_ISA_RTM_SET OPTION_MASK_ISA_RTM
      91              : #define OPTION_MASK_ISA_PRFCHW_SET OPTION_MASK_ISA_PRFCHW
      92              : #define OPTION_MASK_ISA_RDSEED_SET OPTION_MASK_ISA_RDSEED
      93              : #define OPTION_MASK_ISA_ADX_SET OPTION_MASK_ISA_ADX
      94              : #define OPTION_MASK_ISA_CLFLUSHOPT_SET OPTION_MASK_ISA_CLFLUSHOPT
      95              : #define OPTION_MASK_ISA_XSAVES_SET \
      96              :   (OPTION_MASK_ISA_XSAVES | OPTION_MASK_ISA_XSAVE_SET)
      97              : #define OPTION_MASK_ISA_XSAVEC_SET \
      98              :   (OPTION_MASK_ISA_XSAVEC | OPTION_MASK_ISA_XSAVE_SET)
      99              : #define OPTION_MASK_ISA_CLWB_SET OPTION_MASK_ISA_CLWB
     100              : #define OPTION_MASK_ISA2_AVX512VP2INTERSECT_SET OPTION_MASK_ISA2_AVX512VP2INTERSECT
     101              : #define OPTION_MASK_ISA2_AMX_TILE_SET OPTION_MASK_ISA2_AMX_TILE
     102              : #define OPTION_MASK_ISA2_AMX_INT8_SET \
     103              :   (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_INT8)
     104              : #define OPTION_MASK_ISA2_AMX_BF16_SET \
     105              :   (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_BF16)
     106              : #define OPTION_MASK_ISA2_AVXVNNIINT8_SET OPTION_MASK_ISA2_AVXVNNIINT8
     107              : #define OPTION_MASK_ISA2_AVXNECONVERT_SET OPTION_MASK_ISA2_AVXNECONVERT
     108              : #define OPTION_MASK_ISA2_CMPCCXADD_SET OPTION_MASK_ISA2_CMPCCXADD
     109              : #define OPTION_MASK_ISA2_AMX_FP16_SET \
     110              :   (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_FP16)
     111              : #define OPTION_MASK_ISA2_PREFETCHI_SET OPTION_MASK_ISA2_PREFETCHI
     112              : #define OPTION_MASK_ISA2_RAOINT_SET OPTION_MASK_ISA2_RAOINT
     113              : #define OPTION_MASK_ISA2_AMX_COMPLEX_SET \
     114              :   (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_COMPLEX)
     115              : #define OPTION_MASK_ISA2_AVXVNNIINT16_SET OPTION_MASK_ISA2_AVXVNNIINT16
     116              : #define OPTION_MASK_ISA2_SM3_SET OPTION_MASK_ISA2_SM3
     117              : #define OPTION_MASK_ISA2_SHA512_SET OPTION_MASK_ISA2_SHA512
     118              : #define OPTION_MASK_ISA2_SM4_SET OPTION_MASK_ISA2_SM4
     119              : #define OPTION_MASK_ISA2_APX_F_SET OPTION_MASK_ISA2_APX_F
     120              : #define OPTION_MASK_ISA2_USER_MSR_SET OPTION_MASK_ISA2_USER_MSR
     121              : #define OPTION_MASK_ISA_AVX10_1_SET \
     122              :   (OPTION_MASK_ISA_AVX512F_SET | OPTION_MASK_ISA_AVX512CD_SET \
     123              :    | OPTION_MASK_ISA_AVX512DQ_SET | OPTION_MASK_ISA_AVX512BW_SET \
     124              :    | OPTION_MASK_ISA_AVX512VL_SET | OPTION_MASK_ISA_AVX512IFMA_SET \
     125              :    | OPTION_MASK_ISA_AVX512VBMI_SET | OPTION_MASK_ISA_AVX512VBMI2_SET \
     126              :    | OPTION_MASK_ISA_AVX512VNNI_SET | OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET \
     127              :    | OPTION_MASK_ISA_AVX512BITALG_SET)
     128              : #define OPTION_MASK_ISA2_AVX10_1_SET \
     129              :   (OPTION_MASK_ISA2_AVX512FP16_SET | OPTION_MASK_ISA2_AVX512BF16_SET \
     130              :    | OPTION_MASK_ISA2_AVX10_1)
     131              : #define OPTION_MASK_ISA2_AVX10_2_SET \
     132              :   (OPTION_MASK_ISA2_AVX10_1_SET | OPTION_MASK_ISA2_AVX10_2)
     133              : #define OPTION_MASK_ISA2_AMX_AVX512_SET \
     134              :   (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_AVX512)
     135              : #define OPTION_MASK_ISA2_AMX_FP8_SET \
     136              :   (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_FP8)
     137              : #define OPTION_MASK_ISA2_MOVRS_SET OPTION_MASK_ISA2_MOVRS
     138              : #define OPTION_MASK_ISA2_AMX_MOVRS_SET \
     139              :   (OPTION_MASK_ISA2_AMX_TILE_SET | OPTION_MASK_ISA2_AMX_MOVRS)
     140              : #define OPTION_MASK_ISA2_AVX512BMM_SET OPTION_MASK_ISA2_AVX512BMM
     141              : 
     142              : /* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
     143              :    as -msse4.2.  */
     144              : #define OPTION_MASK_ISA_SSE4_SET OPTION_MASK_ISA_SSE4_2_SET
     145              : 
     146              : #define OPTION_MASK_ISA_SSE4A_SET \
     147              :   (OPTION_MASK_ISA_SSE4A | OPTION_MASK_ISA_SSE3_SET)
     148              : #define OPTION_MASK_ISA_FMA4_SET \
     149              :   (OPTION_MASK_ISA_FMA4 | OPTION_MASK_ISA_SSE4A_SET \
     150              :    | OPTION_MASK_ISA_AVX_SET)
     151              : #define OPTION_MASK_ISA_XOP_SET \
     152              :   (OPTION_MASK_ISA_XOP | OPTION_MASK_ISA_FMA4_SET)
     153              : #define OPTION_MASK_ISA_LWP_SET \
     154              :   OPTION_MASK_ISA_LWP
     155              : 
     156              : /* AES, SHA and PCLMUL need SSE2 because they use xmm registers.  */
     157              : #define OPTION_MASK_ISA_AES_SET \
     158              :   (OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2_SET)
     159              : #define OPTION_MASK_ISA_SHA_SET \
     160              :   (OPTION_MASK_ISA_SHA | OPTION_MASK_ISA_SSE2_SET)
     161              : #define OPTION_MASK_ISA_PCLMUL_SET \
     162              :   (OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2_SET)
     163              : 
     164              : #define OPTION_MASK_ISA_ABM_SET \
     165              :   (OPTION_MASK_ISA_ABM | OPTION_MASK_ISA_POPCNT_SET)
     166              : 
     167              : #define OPTION_MASK_ISA2_PCONFIG_SET OPTION_MASK_ISA2_PCONFIG
     168              : #define OPTION_MASK_ISA2_WBNOINVD_SET OPTION_MASK_ISA2_WBNOINVD
     169              : #define OPTION_MASK_ISA2_SGX_SET OPTION_MASK_ISA2_SGX
     170              : #define OPTION_MASK_ISA_BMI_SET OPTION_MASK_ISA_BMI
     171              : #define OPTION_MASK_ISA_BMI2_SET OPTION_MASK_ISA_BMI2
     172              : #define OPTION_MASK_ISA_LZCNT_SET OPTION_MASK_ISA_LZCNT
     173              : #define OPTION_MASK_ISA_TBM_SET OPTION_MASK_ISA_TBM
     174              : #define OPTION_MASK_ISA_POPCNT_SET OPTION_MASK_ISA_POPCNT
     175              : #define OPTION_MASK_ISA2_CX16_SET OPTION_MASK_ISA2_CX16
     176              : #define OPTION_MASK_ISA_SAHF_SET OPTION_MASK_ISA_SAHF
     177              : #define OPTION_MASK_ISA2_MOVBE_SET OPTION_MASK_ISA2_MOVBE
     178              : #define OPTION_MASK_ISA_CRC32_SET OPTION_MASK_ISA_CRC32
     179              : 
     180              : #define OPTION_MASK_ISA_FSGSBASE_SET OPTION_MASK_ISA_FSGSBASE
     181              : #define OPTION_MASK_ISA_RDRND_SET OPTION_MASK_ISA_RDRND
     182              : #define OPTION_MASK_ISA2_PTWRITE_SET OPTION_MASK_ISA2_PTWRITE
     183              : #define OPTION_MASK_ISA_F16C_SET \
     184              :   (OPTION_MASK_ISA_F16C | OPTION_MASK_ISA_AVX_SET)
     185              : #define OPTION_MASK_ISA2_MWAITX_SET OPTION_MASK_ISA2_MWAITX
     186              : #define OPTION_MASK_ISA2_MWAIT_SET OPTION_MASK_ISA2_MWAIT
     187              : #define OPTION_MASK_ISA2_CLZERO_SET OPTION_MASK_ISA2_CLZERO
     188              : #define OPTION_MASK_ISA_PKU_SET OPTION_MASK_ISA_PKU
     189              : #define OPTION_MASK_ISA2_RDPID_SET OPTION_MASK_ISA2_RDPID
     190              : #define OPTION_MASK_ISA_GFNI_SET OPTION_MASK_ISA_GFNI
     191              : #define OPTION_MASK_ISA_SHSTK_SET OPTION_MASK_ISA_SHSTK
     192              : #define OPTION_MASK_ISA2_VAES_SET OPTION_MASK_ISA2_VAES
     193              : #define OPTION_MASK_ISA_VPCLMULQDQ_SET \
     194              :   (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_PCLMUL_SET \
     195              :    | OPTION_MASK_ISA_AVX_SET)
     196              : #define OPTION_MASK_ISA_MOVDIRI_SET OPTION_MASK_ISA_MOVDIRI
     197              : #define OPTION_MASK_ISA2_MOVDIR64B_SET OPTION_MASK_ISA2_MOVDIR64B
     198              : #define OPTION_MASK_ISA2_WAITPKG_SET OPTION_MASK_ISA2_WAITPKG
     199              : #define OPTION_MASK_ISA2_CLDEMOTE_SET OPTION_MASK_ISA2_CLDEMOTE
     200              : #define OPTION_MASK_ISA2_ENQCMD_SET OPTION_MASK_ISA2_ENQCMD
     201              : #define OPTION_MASK_ISA2_SERIALIZE_SET OPTION_MASK_ISA2_SERIALIZE
     202              : #define OPTION_MASK_ISA2_TSXLDTRK_SET OPTION_MASK_ISA2_TSXLDTRK
     203              : #define OPTION_MASK_ISA2_UINTR_SET OPTION_MASK_ISA2_UINTR
     204              : #define OPTION_MASK_ISA2_HRESET_SET OPTION_MASK_ISA2_HRESET
     205              : #define OPTION_MASK_ISA2_KL_SET OPTION_MASK_ISA2_KL
     206              : #define OPTION_MASK_ISA2_WIDEKL_SET \
     207              :   (OPTION_MASK_ISA2_WIDEKL | OPTION_MASK_ISA2_KL_SET)
     208              : 
     209              : /* Define a set of ISAs which aren't available when a given ISA is
     210              :    disabled.  MMX and SSE ISAs are handled separately.  */
     211              : 
     212              : #define OPTION_MASK_ISA_MMX_UNSET \
     213              :   (OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_3DNOW_UNSET)
     214              : #define OPTION_MASK_ISA_3DNOW_UNSET \
     215              :   (OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_3DNOW_A_UNSET)
     216              : #define OPTION_MASK_ISA_3DNOW_A_UNSET OPTION_MASK_ISA_3DNOW_A
     217              : 
     218              : #define OPTION_MASK_ISA_SSE_UNSET \
     219              :   (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_SSE2_UNSET)
     220              : #define OPTION_MASK_ISA_SSE2_UNSET \
     221              :   (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE3_UNSET)
     222              : #define OPTION_MASK_ISA_SSE3_UNSET \
     223              :   (OPTION_MASK_ISA_SSE3 \
     224              :    | OPTION_MASK_ISA_SSSE3_UNSET \
     225              :    | OPTION_MASK_ISA_SSE4A_UNSET )
     226              : #define OPTION_MASK_ISA_SSSE3_UNSET \
     227              :   (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_SSE4_1_UNSET)
     228              : #define OPTION_MASK_ISA_SSE4_1_UNSET \
     229              :   (OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSE4_2_UNSET)
     230              : #define OPTION_MASK_ISA_SSE4_2_UNSET \
     231              :   (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_AVX_UNSET )
     232              : #define OPTION_MASK_ISA_AVX_UNSET \
     233              :   (OPTION_MASK_ISA_AVX | OPTION_MASK_ISA_FMA_UNSET \
     234              :    | OPTION_MASK_ISA_FMA4_UNSET | OPTION_MASK_ISA_F16C_UNSET \
     235              :    | OPTION_MASK_ISA_AVX2_UNSET | OPTION_MASK_ISA_VPCLMULQDQ_UNSET)
     236              : #define OPTION_MASK_ISA_FMA_UNSET OPTION_MASK_ISA_FMA
     237              : #define OPTION_MASK_ISA_FXSR_UNSET OPTION_MASK_ISA_FXSR
     238              : #define OPTION_MASK_ISA_XSAVE_UNSET \
     239              :   (OPTION_MASK_ISA_XSAVE | OPTION_MASK_ISA_XSAVEOPT_UNSET \
     240              :    | OPTION_MASK_ISA_XSAVES_UNSET | OPTION_MASK_ISA_XSAVEC_UNSET \
     241              :    | OPTION_MASK_ISA_AVX_UNSET)
     242              : #define OPTION_MASK_ISA2_XSAVE_UNSET \
     243              :   (OPTION_MASK_ISA2_AVX2_UNSET | OPTION_MASK_ISA2_AMX_TILE_UNSET)
     244              : #define OPTION_MASK_ISA_XSAVEOPT_UNSET OPTION_MASK_ISA_XSAVEOPT
     245              : #define OPTION_MASK_ISA_AVX2_UNSET \
     246              :   (OPTION_MASK_ISA_AVX2 | OPTION_MASK_ISA_AVX512F_UNSET)
     247              : #define OPTION_MASK_ISA2_AVX2_UNSET \
     248              :   (OPTION_MASK_ISA2_AVXIFMA_UNSET | OPTION_MASK_ISA2_AVXVNNI_UNSET \
     249              :    | OPTION_MASK_ISA2_AVXVNNIINT8_UNSET | OPTION_MASK_ISA2_AVXNECONVERT_UNSET \
     250              :    | OPTION_MASK_ISA2_AVXVNNIINT16_UNSET | OPTION_MASK_ISA2_AVX512F_UNSET)
     251              : #define OPTION_MASK_ISA_AVX512F_UNSET \
     252              :   (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX512CD_UNSET \
     253              :    | OPTION_MASK_ISA_AVX512DQ_UNSET | OPTION_MASK_ISA_AVX512BW_UNSET \
     254              :    | OPTION_MASK_ISA_AVX512VL_UNSET | OPTION_MASK_ISA_AVX512IFMA_UNSET \
     255              :    | OPTION_MASK_ISA_AVX512VNNI_UNSET \
     256              :    | OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET)
     257              : #define OPTION_MASK_ISA_AVX512CD_UNSET OPTION_MASK_ISA_AVX512CD
     258              : #define OPTION_MASK_ISA_AVX512DQ_UNSET OPTION_MASK_ISA_AVX512DQ
     259              : #define OPTION_MASK_ISA_AVX512BW_UNSET \
     260              :   (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VBMI_UNSET \
     261              :    | OPTION_MASK_ISA_AVX512VBMI2_UNSET | OPTION_MASK_ISA_AVX512BITALG_UNSET)
     262              : #define OPTION_MASK_ISA_AVX512VL_UNSET OPTION_MASK_ISA_AVX512VL
     263              : #define OPTION_MASK_ISA_AVX512IFMA_UNSET OPTION_MASK_ISA_AVX512IFMA
     264              : #define OPTION_MASK_ISA2_AVXIFMA_UNSET OPTION_MASK_ISA2_AVXIFMA
     265              : #define OPTION_MASK_ISA_AVX512VBMI_UNSET OPTION_MASK_ISA_AVX512VBMI
     266              : #define OPTION_MASK_ISA_AVX512VBMI2_UNSET OPTION_MASK_ISA_AVX512VBMI2
     267              : #define OPTION_MASK_ISA2_AVX512FP16_UNSET \
     268              :   (OPTION_MASK_ISA2_AVX512FP16 | OPTION_MASK_ISA2_AVX10_1_UNSET)
     269              : #define OPTION_MASK_ISA_AVX512VNNI_UNSET OPTION_MASK_ISA_AVX512VNNI
     270              : #define OPTION_MASK_ISA2_AVXVNNI_UNSET OPTION_MASK_ISA2_AVXVNNI
     271              : #define OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET OPTION_MASK_ISA_AVX512VPOPCNTDQ
     272              : #define OPTION_MASK_ISA_AVX512BITALG_UNSET OPTION_MASK_ISA_AVX512BITALG
     273              : #define OPTION_MASK_ISA2_AVX512BF16_UNSET \
     274              :   (OPTION_MASK_ISA2_AVX512BF16 | OPTION_MASK_ISA2_AVX10_1_UNSET)
     275              : #define OPTION_MASK_ISA_RTM_UNSET OPTION_MASK_ISA_RTM
     276              : #define OPTION_MASK_ISA_PRFCHW_UNSET OPTION_MASK_ISA_PRFCHW
     277              : #define OPTION_MASK_ISA_RDSEED_UNSET OPTION_MASK_ISA_RDSEED
     278              : #define OPTION_MASK_ISA_ADX_UNSET OPTION_MASK_ISA_ADX
     279              : #define OPTION_MASK_ISA_CLFLUSHOPT_UNSET OPTION_MASK_ISA_CLFLUSHOPT
     280              : #define OPTION_MASK_ISA_XSAVEC_UNSET OPTION_MASK_ISA_XSAVEC
     281              : #define OPTION_MASK_ISA_XSAVES_UNSET OPTION_MASK_ISA_XSAVES
     282              : #define OPTION_MASK_ISA_CLWB_UNSET OPTION_MASK_ISA_CLWB
     283              : #define OPTION_MASK_ISA2_MWAITX_UNSET OPTION_MASK_ISA2_MWAITX
     284              : #define OPTION_MASK_ISA2_MWAIT_UNSET OPTION_MASK_ISA2_MWAIT
     285              : #define OPTION_MASK_ISA2_CLZERO_UNSET OPTION_MASK_ISA2_CLZERO
     286              : #define OPTION_MASK_ISA_PKU_UNSET OPTION_MASK_ISA_PKU
     287              : #define OPTION_MASK_ISA2_RDPID_UNSET OPTION_MASK_ISA2_RDPID
     288              : #define OPTION_MASK_ISA_GFNI_UNSET OPTION_MASK_ISA_GFNI
     289              : #define OPTION_MASK_ISA_SHSTK_UNSET OPTION_MASK_ISA_SHSTK
     290              : #define OPTION_MASK_ISA2_VAES_UNSET OPTION_MASK_ISA2_VAES
     291              : #define OPTION_MASK_ISA_VPCLMULQDQ_UNSET OPTION_MASK_ISA_VPCLMULQDQ
     292              : #define OPTION_MASK_ISA_MOVDIRI_UNSET OPTION_MASK_ISA_MOVDIRI
     293              : #define OPTION_MASK_ISA2_MOVDIR64B_UNSET OPTION_MASK_ISA2_MOVDIR64B
     294              : #define OPTION_MASK_ISA2_WAITPKG_UNSET OPTION_MASK_ISA2_WAITPKG
     295              : #define OPTION_MASK_ISA2_CLDEMOTE_UNSET OPTION_MASK_ISA2_CLDEMOTE
     296              : #define OPTION_MASK_ISA2_ENQCMD_UNSET OPTION_MASK_ISA2_ENQCMD
     297              : #define OPTION_MASK_ISA2_SERIALIZE_UNSET OPTION_MASK_ISA2_SERIALIZE
     298              : #define OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET OPTION_MASK_ISA2_AVX512VP2INTERSECT
     299              : #define OPTION_MASK_ISA2_TSXLDTRK_UNSET OPTION_MASK_ISA2_TSXLDTRK
     300              : #define OPTION_MASK_ISA2_AMX_TILE_UNSET \
     301              :   (OPTION_MASK_ISA2_AMX_TILE | OPTION_MASK_ISA2_AMX_INT8_UNSET \
     302              :    | OPTION_MASK_ISA2_AMX_BF16_UNSET | OPTION_MASK_ISA2_AMX_FP16_UNSET \
     303              :    | OPTION_MASK_ISA2_AMX_COMPLEX_UNSET | OPTION_MASK_ISA2_AMX_AVX512_UNSET \
     304              :    | OPTION_MASK_ISA2_AMX_FP8_UNSET | OPTION_MASK_ISA2_AMX_MOVRS_UNSET)
     305              : #define OPTION_MASK_ISA2_AMX_INT8_UNSET OPTION_MASK_ISA2_AMX_INT8
     306              : #define OPTION_MASK_ISA2_AMX_BF16_UNSET OPTION_MASK_ISA2_AMX_BF16
     307              : #define OPTION_MASK_ISA2_UINTR_UNSET OPTION_MASK_ISA2_UINTR
     308              : #define OPTION_MASK_ISA2_HRESET_UNSET OPTION_MASK_ISA2_HRESET
     309              : #define OPTION_MASK_ISA2_KL_UNSET \
     310              :   (OPTION_MASK_ISA2_KL | OPTION_MASK_ISA2_WIDEKL_UNSET)
     311              : #define OPTION_MASK_ISA2_WIDEKL_UNSET OPTION_MASK_ISA2_WIDEKL
     312              : #define OPTION_MASK_ISA2_AVXVNNIINT8_UNSET OPTION_MASK_ISA2_AVXVNNIINT8
     313              : #define OPTION_MASK_ISA2_AVXNECONVERT_UNSET OPTION_MASK_ISA2_AVXNECONVERT
     314              : #define OPTION_MASK_ISA2_CMPCCXADD_UNSET OPTION_MASK_ISA2_CMPCCXADD
     315              : #define OPTION_MASK_ISA2_AMX_FP16_UNSET OPTION_MASK_ISA2_AMX_FP16
     316              : #define OPTION_MASK_ISA2_PREFETCHI_UNSET OPTION_MASK_ISA2_PREFETCHI
     317              : #define OPTION_MASK_ISA2_RAOINT_UNSET OPTION_MASK_ISA2_RAOINT
     318              : #define OPTION_MASK_ISA2_AMX_COMPLEX_UNSET OPTION_MASK_ISA2_AMX_COMPLEX
     319              : #define OPTION_MASK_ISA2_AVXVNNIINT16_UNSET OPTION_MASK_ISA2_AVXVNNIINT16
     320              : #define OPTION_MASK_ISA2_SM3_UNSET OPTION_MASK_ISA2_SM3
     321              : #define OPTION_MASK_ISA2_SHA512_UNSET OPTION_MASK_ISA2_SHA512
     322              : #define OPTION_MASK_ISA2_SM4_UNSET OPTION_MASK_ISA2_SM4
     323              : #define OPTION_MASK_ISA2_APX_F_UNSET OPTION_MASK_ISA2_APX_F
     324              : #define OPTION_MASK_ISA2_USER_MSR_UNSET OPTION_MASK_ISA2_USER_MSR
     325              : #define OPTION_MASK_ISA2_AVX10_1_UNSET \
     326              :   (OPTION_MASK_ISA2_AVX10_1 | OPTION_MASK_ISA2_AVX10_2_UNSET)
     327              : #define OPTION_MASK_ISA2_AVX10_2_UNSET OPTION_MASK_ISA2_AVX10_2
     328              : #define OPTION_MASK_ISA2_AMX_AVX512_UNSET OPTION_MASK_ISA2_AMX_AVX512
     329              : #define OPTION_MASK_ISA2_AMX_FP8_UNSET OPTION_MASK_ISA2_AMX_FP8
     330              : #define OPTION_MASK_ISA2_MOVRS_UNSET OPTION_MASK_ISA2_MOVRS
     331              : #define OPTION_MASK_ISA2_AMX_MOVRS_UNSET OPTION_MASK_ISA2_AMX_MOVRS
     332              : #define OPTION_MASK_ISA2_AVX512BMM_UNSET OPTION_MASK_ISA2_AVX512BMM
     333              : 
     334              : /* SSE4 includes both SSE4.1 and SSE4.2.  -mno-sse4 should the same
     335              :    as -mno-sse4.1. */
     336              : #define OPTION_MASK_ISA_SSE4_UNSET OPTION_MASK_ISA_SSE4_1_UNSET
     337              : 
     338              : #define OPTION_MASK_ISA_SSE4A_UNSET \
     339              :   (OPTION_MASK_ISA_SSE4A | OPTION_MASK_ISA_FMA4_UNSET)
     340              : 
     341              : #define OPTION_MASK_ISA_FMA4_UNSET \
     342              :   (OPTION_MASK_ISA_FMA4 | OPTION_MASK_ISA_XOP_UNSET)
     343              : #define OPTION_MASK_ISA_XOP_UNSET OPTION_MASK_ISA_XOP
     344              : #define OPTION_MASK_ISA_LWP_UNSET OPTION_MASK_ISA_LWP
     345              : 
     346              : #define OPTION_MASK_ISA_AES_UNSET OPTION_MASK_ISA_AES
     347              : #define OPTION_MASK_ISA_SHA_UNSET OPTION_MASK_ISA_SHA
     348              : #define OPTION_MASK_ISA_PCLMUL_UNSET \
     349              :   (OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_VPCLMULQDQ_UNSET)
     350              : #define OPTION_MASK_ISA_ABM_UNSET OPTION_MASK_ISA_ABM
     351              : #define OPTION_MASK_ISA2_PCONFIG_UNSET OPTION_MASK_ISA2_PCONFIG
     352              : #define OPTION_MASK_ISA2_WBNOINVD_UNSET OPTION_MASK_ISA2_WBNOINVD
     353              : #define OPTION_MASK_ISA2_SGX_UNSET OPTION_MASK_ISA2_SGX
     354              : #define OPTION_MASK_ISA_BMI_UNSET OPTION_MASK_ISA_BMI
     355              : #define OPTION_MASK_ISA_BMI2_UNSET OPTION_MASK_ISA_BMI2
     356              : #define OPTION_MASK_ISA_LZCNT_UNSET OPTION_MASK_ISA_LZCNT
     357              : #define OPTION_MASK_ISA_TBM_UNSET OPTION_MASK_ISA_TBM
     358              : #define OPTION_MASK_ISA_POPCNT_UNSET OPTION_MASK_ISA_POPCNT
     359              : #define OPTION_MASK_ISA2_CX16_UNSET OPTION_MASK_ISA2_CX16
     360              : #define OPTION_MASK_ISA_SAHF_UNSET OPTION_MASK_ISA_SAHF
     361              : #define OPTION_MASK_ISA2_MOVBE_UNSET OPTION_MASK_ISA2_MOVBE
     362              : #define OPTION_MASK_ISA_CRC32_UNSET OPTION_MASK_ISA_CRC32
     363              : 
     364              : #define OPTION_MASK_ISA_FSGSBASE_UNSET OPTION_MASK_ISA_FSGSBASE
     365              : #define OPTION_MASK_ISA_RDRND_UNSET OPTION_MASK_ISA_RDRND
     366              : #define OPTION_MASK_ISA2_PTWRITE_UNSET OPTION_MASK_ISA2_PTWRITE
     367              : #define OPTION_MASK_ISA_F16C_UNSET OPTION_MASK_ISA_F16C
     368              : 
     369              : #define OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET \
     370              :   (OPTION_MASK_ISA_MMX_UNSET \
     371              :    | OPTION_MASK_ISA_SSE_UNSET)
     372              : 
     373              : #define OPTION_MASK_ISA2_AVX512F_UNSET \
     374              :   (OPTION_MASK_ISA2_AVX512BW_UNSET \
     375              :    | OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET \
     376              :    | OPTION_MASK_ISA2_AVX10_1_UNSET \
     377              :    | OPTION_MASK_ISA2_AMX_AVX512_UNSET)
     378              : #define OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET \
     379              :   OPTION_MASK_ISA2_SSE_UNSET
     380              : #define OPTION_MASK_ISA2_AVX_UNSET \
     381              :   (OPTION_MASK_ISA2_AVX2_UNSET | OPTION_MASK_ISA2_VAES_UNSET \
     382              :    | OPTION_MASK_ISA2_SM3_UNSET | OPTION_MASK_ISA2_SHA512_UNSET \
     383              :    | OPTION_MASK_ISA2_SM4_UNSET)
     384              : #define OPTION_MASK_ISA2_SSE4_2_UNSET OPTION_MASK_ISA2_AVX_UNSET
     385              : #define OPTION_MASK_ISA2_SSE4_1_UNSET OPTION_MASK_ISA2_SSE4_2_UNSET
     386              : #define OPTION_MASK_ISA2_SSE4_UNSET OPTION_MASK_ISA2_SSE4_1_UNSET
     387              : #define OPTION_MASK_ISA2_SSSE3_UNSET OPTION_MASK_ISA2_SSE4_1_UNSET
     388              : #define OPTION_MASK_ISA2_SSE3_UNSET OPTION_MASK_ISA2_SSSE3_UNSET
     389              : #define OPTION_MASK_ISA2_SSE2_UNSET \
     390              :   (OPTION_MASK_ISA2_SSE3_UNSET | OPTION_MASK_ISA2_KL_UNSET)
     391              : #define OPTION_MASK_ISA2_SSE_UNSET OPTION_MASK_ISA2_SSE2_UNSET
     392              : 
     393              : #define OPTION_MASK_ISA2_AVX512BW_UNSET \
     394              :   (OPTION_MASK_ISA2_AVX512BF16_UNSET \
     395              :     | OPTION_MASK_ISA2_AVX512FP16_UNSET \
     396              :     | OPTION_MASK_ISA2_AVX10_1_UNSET \
     397              :     | OPTION_MASK_ISA2_AVX512BMM_UNSET)
     398              : #define OPTION_MASK_ISA2_AVX512CD_UNSET OPTION_MASK_ISA2_AVX10_1_UNSET
     399              : #define OPTION_MASK_ISA2_AVX512DQ_UNSET OPTION_MASK_ISA2_AVX10_1_UNSET
     400              : #define OPTION_MASK_ISA2_AVX512VL_UNSET OPTION_MASK_ISA2_AVX10_1_UNSET
     401              : #define OPTION_MASK_ISA2_AVX512IFMA_UNSET OPTION_MASK_ISA2_AVX10_1_UNSET
     402              : #define OPTION_MASK_ISA2_AVX512VNNI_UNSET OPTION_MASK_ISA2_AVX10_1_UNSET
     403              : #define OPTION_MASK_ISA2_AVX512VPOPCNTDQ_UNSET OPTION_MASK_ISA2_AVX10_1_UNSET
     404              : #define OPTION_MASK_ISA2_AVX512VBMI_UNSET OPTION_MASK_ISA2_AVX10_1_UNSET
     405              : #define OPTION_MASK_ISA2_AVX512VBMI2_UNSET OPTION_MASK_ISA2_AVX10_1_UNSET
     406              : #define OPTION_MASK_ISA2_AVX512BITALG_UNSET OPTION_MASK_ISA2_AVX10_1_UNSET
     407              : 
     408              : /* Set 1 << value as value of -malign-FLAG option.  */
     409              : 
     410              : static void
     411            1 : set_malign_value (const char **flag, unsigned value)
     412              : {
     413            1 :   char *r = XNEWVEC (char, 6);
     414            1 :   sprintf (r, "%d", 1 << value);
     415            1 :   *flag = r;
     416            1 : }
     417              : 
     418              : /* Implement TARGET_HANDLE_OPTION.  */
     419              : 
     420              : bool
     421     67658227 : ix86_handle_option (struct gcc_options *opts,
     422              :                     struct gcc_options *opts_set ATTRIBUTE_UNUSED,
     423              :                     const struct cl_decoded_option *decoded,
     424              :                     location_t loc)
     425              : {
     426     67658227 :   size_t code = decoded->opt_index;
     427     67658227 :   int value = decoded->value;
     428              : 
     429     67658227 :   switch (code)
     430              :     {
     431      1973339 :     case OPT_mgeneral_regs_only:
     432      1973339 :       if (value)
     433              :         {
     434      1973339 :           HOST_WIDE_INT general_regs_only_flags = 0;
     435      1973339 :           HOST_WIDE_INT general_regs_only_flags2 = 0;
     436              : 
     437              :           /* NB: Enable the GPR only instructions which are enabled
     438              :              implicitly by SSE ISAs unless they have been disabled
     439              :              explicitly.  */
     440      1973339 :           if (TARGET_SSE4_2_P (opts->x_ix86_isa_flags))
     441              :             {
     442         6481 :               if (!TARGET_EXPLICIT_CRC32_P (opts))
     443         4570 :                 general_regs_only_flags |= OPTION_MASK_ISA_CRC32;
     444         6481 :               if (!TARGET_EXPLICIT_POPCNT_P (opts))
     445         4552 :                 general_regs_only_flags |= OPTION_MASK_ISA_POPCNT;
     446              :             }
     447      1973339 :           if (TARGET_SSE3_P (opts->x_ix86_isa_flags))
     448              :             {
     449         6889 :               if (!TARGET_EXPLICIT_MWAIT_P (opts))
     450      1973339 :                 general_regs_only_flags2 |= OPTION_MASK_ISA2_MWAIT;
     451              :             }
     452              : 
     453              :           /* Disable MMX, SSE and x87 instructions if only
     454              :              general registers are allowed.  */
     455      1973339 :           opts->x_ix86_isa_flags
     456      1973339 :             &= ~OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;
     457      1973339 :           opts->x_ix86_isa_flags2
     458      1973339 :             &= ~OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;
     459      1973339 :           opts->x_ix86_isa_flags |= general_regs_only_flags;
     460      1973339 :           opts->x_ix86_isa_flags2 |= general_regs_only_flags2;
     461      1973339 :           opts->x_ix86_isa_flags_explicit
     462      1973339 :             |= (OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET
     463              :                 | general_regs_only_flags);
     464      1973339 :           opts->x_ix86_isa_flags2_explicit
     465      1973339 :             |= (OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET
     466              :                 | general_regs_only_flags2);
     467              : 
     468      1973339 :           opts->x_target_flags &= ~MASK_80387;
     469              :         }
     470              :       else
     471            0 :         gcc_unreachable ();
     472      1973339 :       return true;
     473              : 
     474         3465 :     case OPT_mmmx:
     475         3465 :       if (value)
     476              :         {
     477         1646 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_MMX_SET;
     478         1646 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_SET;
     479              :         }
     480              :       else
     481              :         {
     482         1819 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_MMX_UNSET;
     483         1819 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_UNSET;
     484              :         }
     485              :       return true;
     486              : 
     487        83628 :     case OPT_m3dnow:
     488        83628 :       if (value)
     489              :         {
     490        83615 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_3DNOW_SET;
     491        83615 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_SET;
     492              :         }
     493              :       else
     494              :         {
     495           13 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_3DNOW_UNSET;
     496           13 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_UNSET;
     497              :         }
     498              :       return true;
     499              : 
     500         6029 :     case OPT_m3dnowa:
     501         6029 :       if (value)
     502              :         {
     503         6028 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_3DNOW_A_SET;
     504         6028 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_A_SET;
     505              :         }
     506              :       else
     507              :         {
     508            1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_3DNOW_A_UNSET;
     509            1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_A_UNSET;
     510              :         }
     511              :       return true;
     512              : 
     513        33888 :     case OPT_msse:
     514        33888 :       if (value)
     515              :         {
     516        33786 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE_SET;
     517        33786 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_SET;
     518              :         }
     519              :       else
     520              :         {
     521          102 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;
     522          102 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;
     523          102 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE_UNSET;
     524          102 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE_UNSET;
     525              :         }
     526              :       return true;
     527              : 
     528        86958 :     case OPT_msse2:
     529        86958 :       if (value)
     530              :         {
     531        86843 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET;
     532        86843 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET;
     533              :         }
     534              :       else
     535              :         {
     536          115 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;
     537          115 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;
     538          115 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE2_UNSET;
     539          115 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE2_UNSET;
     540              :         }
     541              :       return true;
     542              : 
     543        24528 :     case OPT_msse3:
     544        24528 :       if (value)
     545              :         {
     546        24445 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE3_SET;
     547        24445 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_SET;
     548              :         }
     549              :       else
     550              :         {
     551           83 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;
     552           83 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;
     553           83 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE3_UNSET;
     554           83 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE3_UNSET;
     555              :         }
     556              :       return true;
     557              : 
     558        45805 :     case OPT_mssse3:
     559        45805 :       if (value)
     560              :         {
     561        45797 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSSE3_SET;
     562        45797 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_SET;
     563              :         }
     564              :       else
     565              :         {
     566            8 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;
     567            8 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;
     568            8 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSSE3_UNSET;
     569            8 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSSE3_UNSET;
     570              :         }
     571              :       return true;
     572              : 
     573        78715 :     case OPT_msse4_1:
     574        78715 :       if (value)
     575              :         {
     576        78688 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4_1_SET;
     577        78688 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_SET;
     578              :         }
     579              :       else
     580              :         {
     581           27 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;
     582           27 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;
     583           27 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE4_1_UNSET;
     584           27 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE4_1_UNSET;
     585              :         }
     586              :       return true;
     587              : 
     588        29438 :     case OPT_msse4_2:
     589        29438 :       if (value)
     590              :         {
     591        29425 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4_2_SET;
     592        29425 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_SET;
     593              :         }
     594              :       else
     595              :         {
     596           13 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;
     597           13 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;
     598           13 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE4_2_UNSET;
     599           13 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE4_2_UNSET;
     600              :         }
     601              :       return true;
     602              : 
     603       297860 :     case OPT_mavx:
     604       297860 :       if (value)
     605              :         {
     606       296237 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX_SET;
     607       296237 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_SET;
     608              :         }
     609              :       else
     610              :         {
     611         1623 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX_UNSET;
     612         1623 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_UNSET;
     613         1623 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX_UNSET;
     614         1623 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX_UNSET;
     615              :         }
     616              :       return true;
     617              : 
     618       612099 :     case OPT_mavx2:
     619       612099 :       if (value)
     620              :         {
     621       612023 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
     622       612023 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
     623              :         }
     624              :       else
     625              :         {
     626           76 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX2_UNSET;
     627           76 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_UNSET;
     628           76 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX2_UNSET;
     629           76 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX2_UNSET;
     630              :         }
     631              :       return true;
     632              : 
     633      5013741 :     case OPT_mavx512f:
     634      5013741 :       if (value)
     635              :         {
     636      5013626 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;
     637      5013626 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;
     638              :         }
     639              :       else
     640              :         {
     641          115 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512F_UNSET;
     642          115 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_UNSET;
     643          115 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     644          115 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     645              :         }
     646              :       return true;
     647              : 
     648       415508 :     case OPT_mavx512cd:
     649       415508 :       if (value)
     650              :         {
     651       415484 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512CD_SET;
     652       415484 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512CD_SET;
     653              :         }
     654              :       else
     655              :         {
     656           24 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512CD_UNSET;
     657           24 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512CD_UNSET;
     658           24 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512CD_UNSET;
     659           24 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512CD_UNSET;
     660              :         }
     661              :       return true;
     662              : 
     663        61959 :     case OPT_mrdpid:
     664        61959 :       if (value)
     665              :         {
     666        61958 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_RDPID_SET;
     667        61958 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_RDPID_SET;
     668              :         }
     669              :       else
     670              :         {
     671            1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_RDPID_UNSET;
     672            1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_RDPID_UNSET;
     673              :         }
     674              :       return true;
     675              : 
     676       362617 :     case OPT_mgfni:
     677       362617 :       if (value)
     678              :         {
     679       362604 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_GFNI_SET;
     680       362604 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_GFNI_SET;
     681              :         }
     682              :       else
     683              :         {
     684           13 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_GFNI_UNSET;
     685           13 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_GFNI_UNSET;
     686              :         }
     687              :       return true;
     688              : 
     689       124575 :     case OPT_mshstk:
     690       124575 :       if (value)
     691              :         {
     692       124563 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SHSTK_SET;
     693       124563 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SHSTK_SET;
     694              :         }
     695              :       else
     696              :         {
     697           12 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SHSTK_UNSET;
     698           12 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SHSTK_UNSET;
     699              :         }
     700              :       return true;
     701              : 
     702        90230 :     case OPT_mvaes:
     703        90230 :       if (value)
     704              :         {
     705        90218 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_VAES_SET;
     706        90218 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_VAES_SET;
     707        90218 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX_SET;
     708        90218 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_SET;
     709              :         }
     710              :       else
     711              :         {
     712           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_VAES_UNSET;
     713           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_VAES_UNSET;
     714              :         }
     715              :       return true;
     716              : 
     717        74364 :     case OPT_mvpclmulqdq:
     718        74364 :       if (value)
     719              :         {
     720        74352 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_VPCLMULQDQ_SET;
     721        74352 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_VPCLMULQDQ_SET;
     722              :         }
     723              :       else
     724              :         {
     725           12 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_VPCLMULQDQ_UNSET;
     726           12 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_VPCLMULQDQ_UNSET;
     727              :         }
     728              :       return true;
     729              : 
     730        25363 :     case OPT_mmovdiri:
     731        25363 :       if (value)
     732              :         {
     733        25352 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_MOVDIRI_SET;
     734        25352 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_MOVDIRI_SET;
     735              :         }
     736              :       else
     737              :         {
     738           11 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_MOVDIRI_UNSET;
     739           11 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_MOVDIRI_UNSET;
     740              :         }
     741              :       return true;
     742              : 
     743        15373 :     case OPT_mmovdir64b:
     744        15373 :       if (value)
     745              :         {
     746        15362 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MOVDIR64B_SET;
     747        15362 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MOVDIR64B_SET;
     748              :         }
     749              :       else
     750              :         {
     751           11 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_MOVDIR64B_UNSET;
     752           11 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MOVDIR64B_UNSET;
     753              :         }
     754              :         return true;
     755              : 
     756        15368 :     case OPT_mcldemote:
     757        15368 :       if (value)
     758              :         {
     759        15357 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CLDEMOTE_SET;
     760        15357 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CLDEMOTE_SET;
     761              :         }
     762              :       else
     763              :         {
     764           11 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_CLDEMOTE_UNSET;
     765           11 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CLDEMOTE_UNSET;
     766              :         }
     767              :       return true;
     768              : 
     769        35551 :     case OPT_mwaitpkg:
     770        35551 :       if (value)
     771              :         {
     772        35540 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_WAITPKG_SET;
     773        35540 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WAITPKG_SET;
     774              :         }
     775              :       else
     776              :         {
     777           11 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_WAITPKG_UNSET;
     778           11 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WAITPKG_UNSET;
     779              :         }
     780              :       return true;
     781              : 
     782        71404 :     case OPT_menqcmd:
     783        71404 :       if (value)
     784              :         {
     785        71392 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_ENQCMD_SET;
     786        71392 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_ENQCMD_SET;
     787              :         }
     788              :       else
     789              :         {
     790           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_ENQCMD_UNSET;
     791           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_ENQCMD_UNSET;
     792              :         }
     793              :         return true;
     794              : 
     795       145566 :     case OPT_mkl:
     796       145566 :       if (value)
     797              :         {
     798       145554 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_KL_SET;
     799       145554 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_KL_SET;
     800              : 
     801              :           /* The Keylocker instructions need XMM registers from SSE2.  */
     802       145554 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET;
     803       145554 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET;
     804              :         }
     805              :       else
     806              :         {
     807           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_KL_UNSET;
     808           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_KL_UNSET;
     809              :         }
     810              :       return true;
     811              : 
     812       154228 :     case OPT_mwidekl:
     813       154228 :       if (value)
     814              :         {
     815       154216 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_WIDEKL_SET;
     816       154216 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WIDEKL_SET;
     817              : 
     818              :           /* The Widekl instructions need XMM registers from SSE2.  */
     819       154216 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET;
     820       154216 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET;
     821              :         }
     822              :       else
     823              :         {
     824           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_WIDEKL_UNSET;
     825           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WIDEKL_UNSET;
     826              :         }
     827              :       return true;
     828              : 
     829        87520 :     case OPT_mserialize:
     830        87520 :       if (value)
     831              :         {
     832        87507 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_SERIALIZE_SET;
     833        87507 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SERIALIZE_SET;
     834              :         }
     835              :       else
     836              :         {
     837           13 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SERIALIZE_UNSET;
     838           13 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SERIALIZE_UNSET;
     839              :         }
     840              :       return true;
     841              : 
     842        46434 :     case OPT_muintr:
     843        46434 :       if (value)
     844              :         {
     845        46422 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_UINTR_SET;
     846        46422 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_UINTR_SET;
     847              :         }
     848              :       else
     849              :         {
     850           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_UINTR_UNSET;
     851           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_UINTR_UNSET;
     852              :         }
     853              :       return true;
     854              : 
     855        16907 :     case OPT_mhreset:
     856        16907 :       if (value)
     857              :         {
     858        16895 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_HRESET_SET;
     859        16895 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_HRESET_SET;
     860              :         }
     861              :       else
     862              :         {
     863           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_HRESET_UNSET;
     864           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_HRESET_UNSET;
     865              :         }
     866              :       return true;
     867              : 
     868      1437478 :     case OPT_mavx512vbmi2:
     869      1437478 :       if (value)
     870              :         {
     871      1437467 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VBMI2_SET;
     872      1437467 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VBMI2_SET;
     873              :         }
     874              :       else
     875              :         {
     876           11 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VBMI2_UNSET;
     877           11 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VBMI2_UNSET;
     878           11 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512VBMI2_UNSET;
     879           11 :           opts->x_ix86_isa_flags2_explicit
     880           11 :             |= OPTION_MASK_ISA2_AVX512VBMI2_UNSET;
     881              :         }
     882              :       return true;
     883              : 
     884      7946713 :     case OPT_mavx512fp16:
     885      7946713 :       if (value)
     886              :         {
     887      7946698 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX512FP16_SET;
     888      7946698 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512FP16_SET;
     889      7946698 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512FP16_SET;
     890      7946698 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512FP16_SET;
     891              :         }
     892              :       else
     893              :         {
     894           15 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512FP16_UNSET;
     895           15 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512FP16_UNSET;
     896              :         }
     897              :       return true;
     898              : 
     899       282136 :     case OPT_mavx512vnni:
     900       282136 :       if (value)
     901              :         {
     902       282124 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VNNI_SET;
     903       282124 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VNNI_SET;
     904              :         }
     905              :       else
     906              :         {
     907           12 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VNNI_UNSET;
     908           12 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VNNI_UNSET;
     909           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512VNNI_UNSET;
     910           12 :           opts->x_ix86_isa_flags2_explicit
     911           12 :             |= OPTION_MASK_ISA2_AVX512VNNI_UNSET;
     912              :         }
     913              :       return true;
     914              : 
     915       184961 :     case OPT_mavx512vpopcntdq:
     916       184961 :       if (value)
     917              :         {
     918       184937 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;
     919       184937 :           opts->x_ix86_isa_flags_explicit
     920       184937 :             |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;
     921              :         }
     922              :       else
     923              :         {
     924           24 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;
     925           24 :           opts->x_ix86_isa_flags_explicit
     926           24 :             |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;
     927           24 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512VPOPCNTDQ_UNSET;
     928           24 :           opts->x_ix86_isa_flags2_explicit
     929           24 :             |= OPTION_MASK_ISA2_AVX512VPOPCNTDQ_UNSET;
     930              :         }
     931              :       return true;
     932              : 
     933       243097 :     case OPT_mavx512bitalg:
     934       243097 :       if (value)
     935              :         {
     936       243086 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BITALG_SET;
     937       243086 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512BITALG_SET;
     938              :         }
     939              :       else
     940              :         {
     941           11 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512BITALG_UNSET;
     942           11 :           opts->x_ix86_isa_flags_explicit
     943           11 :                 |= OPTION_MASK_ISA_AVX512BITALG_UNSET;
     944           11 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512BITALG_UNSET;
     945           11 :           opts->x_ix86_isa_flags2_explicit
     946           11 :             |= OPTION_MASK_ISA2_AVX512BITALG_UNSET;
     947              :         }
     948              :       return true;
     949              : 
     950       418434 :     case OPT_mavx512bf16:
     951       418434 :       if (value)
     952              :         {
     953       418420 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX512BF16_SET;
     954       418420 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512BF16_SET;
     955       418420 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BW_SET;
     956       418420 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512BW_SET;
     957              :         }
     958              :       else
     959              :         {
     960           14 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512BF16_UNSET;
     961           14 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512BF16_UNSET;
     962              :         }
     963              :       return true;
     964              : 
     965       140468 :     case OPT_mavx512bmm:
     966       140468 :       if (value)
     967              :         {
     968       140457 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX512BMM_SET;
     969       140457 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512BMM_SET;
     970       140457 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BW_SET;
     971       140457 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512BW_SET;
     972              :         }
     973              :       else
     974              :         {
     975           11 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512BMM_UNSET;
     976           11 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512BMM_UNSET;
     977              :         }
     978              :       return true;
     979              : 
     980       155398 :     case OPT_mavxvnni:
     981       155398 :       if (value)
     982              :         {
     983       155384 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVXVNNI_SET;
     984       155384 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVXVNNI_SET;
     985       155384 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
     986       155384 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
     987              :         }
     988              :       else
     989              :         {
     990           14 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVXVNNI_UNSET;
     991           14 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVXVNNI_UNSET;
     992              :         }
     993              :       return true;
     994              : 
     995       111054 :     case OPT_msgx:
     996       111054 :       if (value)
     997              :         {
     998       111042 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_SGX_SET;
     999       111042 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SGX_SET;
    1000              :         }
    1001              :       else
    1002              :         {
    1003           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SGX_UNSET;
    1004           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SGX_UNSET;
    1005              :         }
    1006              :       return true;
    1007              : 
    1008        71039 :     case OPT_mpconfig:
    1009        71039 :       if (value)
    1010              :         {
    1011        71028 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_PCONFIG_SET;
    1012        71028 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PCONFIG_SET;
    1013              :         }
    1014              :       else
    1015              :         {
    1016           11 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_PCONFIG_UNSET;
    1017           11 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PCONFIG_UNSET;
    1018              :         }
    1019              :       return true;
    1020              : 
    1021        61328 :     case OPT_mwbnoinvd:
    1022        61328 :       if (value)
    1023              :         {
    1024        61328 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_WBNOINVD_SET;
    1025        61328 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WBNOINVD_SET;
    1026              :         }
    1027              :       else
    1028              :         {
    1029            0 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_WBNOINVD_UNSET;
    1030            0 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WBNOINVD_UNSET;
    1031              :         }
    1032              :       return true;
    1033              : 
    1034      3606508 :     case OPT_mavx512dq:
    1035      3606508 :       if (value)
    1036              :         {
    1037      3606475 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512DQ_SET;
    1038      3606475 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512DQ_SET;
    1039              :         }
    1040              :       else
    1041              :         {
    1042           33 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512DQ_UNSET;
    1043           33 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512DQ_UNSET;
    1044           33 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512DQ_UNSET;
    1045           33 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512DQ_UNSET;
    1046              :         }
    1047              :       return true;
    1048              : 
    1049      6870995 :     case OPT_mavx512bw:
    1050      6870995 :       if (value)
    1051              :         {
    1052      6870938 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BW_SET;
    1053      6870938 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512BW_SET;
    1054              :         }
    1055              :       else
    1056              :         {
    1057           57 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512BW_UNSET;
    1058           57 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512BW_UNSET;
    1059           57 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512BW_UNSET;
    1060           57 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512BW_UNSET;
    1061              :         }
    1062              :       return true;
    1063              : 
    1064     20510417 :     case OPT_mavx512vl:
    1065     20510417 :       if (value)
    1066              :         {
    1067     20510357 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VL_SET;
    1068     20510357 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VL_SET;
    1069              :         }
    1070              :       else
    1071              :         {
    1072           60 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VL_UNSET;
    1073           60 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VL_UNSET;
    1074           60 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512VL_UNSET;
    1075           60 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512VL_UNSET;
    1076              :         }
    1077              :       return true;
    1078              : 
    1079       146144 :     case OPT_mavx512ifma:
    1080       146144 :       if (value)
    1081              :         {
    1082       146132 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512IFMA_SET;
    1083       146132 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512IFMA_SET;
    1084              :         }
    1085              :       else
    1086              :         {
    1087           12 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512IFMA_UNSET;
    1088           12 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512IFMA_UNSET;
    1089           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512IFMA_UNSET;
    1090           12 :           opts->x_ix86_isa_flags2_explicit
    1091           12 :             |= OPTION_MASK_ISA2_AVX512IFMA_UNSET;
    1092              :         }
    1093              :       return true;
    1094              : 
    1095       301471 :     case OPT_mavx512vbmi:
    1096       301471 :       if (value)
    1097              :         {
    1098       301459 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VBMI_SET;
    1099       301459 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VBMI_SET;
    1100              :         }
    1101              :       else
    1102              :         {
    1103           12 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VBMI_UNSET;
    1104           12 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VBMI_UNSET;
    1105           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512VBMI_UNSET;
    1106           12 :           opts->x_ix86_isa_flags2_explicit
    1107           12 :             |= OPTION_MASK_ISA2_AVX512VBMI_UNSET;
    1108              :         }
    1109              :       return true;
    1110              : 
    1111       140910 :     case OPT_mavx512vp2intersect:
    1112       140910 :       if (value)
    1113              :         {
    1114       140898 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX512VP2INTERSECT_SET;
    1115       140898 :           opts->x_ix86_isa_flags2_explicit |=
    1116              :             OPTION_MASK_ISA2_AVX512VP2INTERSECT_SET;
    1117       140898 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512DQ_SET;
    1118       140898 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512DQ_SET;
    1119              :         }
    1120              :       else
    1121              :         {
    1122           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET;
    1123           12 :           opts->x_ix86_isa_flags2_explicit |=
    1124              :             OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET;
    1125              :         }
    1126              :       return true;
    1127              : 
    1128        97584 :     case OPT_mtsxldtrk:
    1129        97584 :       if (value)
    1130              :         {
    1131        97572 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_TSXLDTRK_SET;
    1132        97572 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_TSXLDTRK_SET;
    1133              :         }
    1134              :       else
    1135              :         {
    1136           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_TSXLDTRK_UNSET;
    1137           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_TSXLDTRK_UNSET;
    1138              :         }
    1139              :       return true;
    1140              : 
    1141       105064 :     case OPT_mamx_tile:
    1142       105064 :       if (value)
    1143              :         {
    1144       105052 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_TILE_SET;
    1145       105052 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_TILE_SET;
    1146       105052 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVE_SET;
    1147       105052 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVE_SET;
    1148              :         }
    1149              :       else
    1150              :         {
    1151           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_TILE_UNSET;
    1152           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_TILE_UNSET;
    1153              :         }
    1154              :       return true;
    1155              : 
    1156        75878 :     case OPT_mamx_int8:
    1157        75878 :       if (value)
    1158              :         {
    1159        75866 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_INT8_SET;
    1160        75866 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_INT8_SET;
    1161              :         }
    1162              :       else
    1163              :         {
    1164           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_INT8_UNSET;
    1165           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_INT8_UNSET;
    1166              :         }
    1167              :       return true;
    1168              : 
    1169        75881 :     case OPT_mamx_bf16:
    1170        75881 :       if (value)
    1171              :         {
    1172        75869 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_BF16_SET;
    1173        75869 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_BF16_SET;
    1174              :         }
    1175              :       else
    1176              :         {
    1177           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_BF16_UNSET;
    1178           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_BF16_UNSET;
    1179              :         }
    1180              :       return true;
    1181              : 
    1182       115751 :     case OPT_mavxifma:
    1183       115751 :       if (value)
    1184              :         {
    1185       115739 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVXIFMA_SET;
    1186       115739 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVXIFMA_SET;
    1187       115739 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
    1188       115739 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
    1189              :         }
    1190              :       else
    1191              :         {
    1192           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVXIFMA_UNSET;
    1193           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVXIFMA_UNSET;
    1194              :         }
    1195              :       return true;
    1196              : 
    1197       195394 :     case OPT_mavxvnniint8:
    1198       195394 :       if (value)
    1199              :         {
    1200       195381 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVXVNNIINT8_SET;
    1201       195381 :           opts->x_ix86_isa_flags2_explicit |=
    1202              :             OPTION_MASK_ISA2_AVXVNNIINT8_SET;
    1203       195381 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
    1204       195381 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
    1205              :         }
    1206              :       else
    1207              :         {
    1208           13 :           opts->x_ix86_isa_flags2 &=
    1209              :             ~OPTION_MASK_ISA2_AVXVNNIINT8_UNSET;
    1210           13 :           opts->x_ix86_isa_flags2_explicit |=
    1211              :             OPTION_MASK_ISA2_AVXVNNIINT8_UNSET;
    1212              :         }
    1213              :       return true;
    1214              : 
    1215       215337 :     case OPT_mavxneconvert:
    1216       215337 :       if (value)
    1217              :         {
    1218       215323 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVXNECONVERT_SET;
    1219       215323 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVXNECONVERT_SET;
    1220       215323 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
    1221       215323 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
    1222              :         }
    1223              :       else
    1224              :         {
    1225           14 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVXNECONVERT_UNSET;
    1226           14 :           opts->x_ix86_isa_flags2_explicit
    1227           14 :             |= OPTION_MASK_ISA2_AVXNECONVERT_UNSET;
    1228              :         }
    1229              :       return true;
    1230              : 
    1231        70695 :     case OPT_mcmpccxadd:
    1232        70695 :       if (value)
    1233              :         {
    1234        70683 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CMPCCXADD_SET;
    1235        70683 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CMPCCXADD_SET;
    1236              :         }
    1237              :       else
    1238              :         {
    1239           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_CMPCCXADD_UNSET;
    1240           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CMPCCXADD_UNSET;
    1241              :         }
    1242              :       return true;
    1243              : 
    1244        70711 :     case OPT_mamx_fp16:
    1245        70711 :       if (value)
    1246              :         {
    1247        70699 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_FP16_SET;
    1248        70699 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_FP16_SET;
    1249              :         }
    1250              :       else
    1251              :         {
    1252           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_FP16_UNSET;
    1253           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_FP16_UNSET;
    1254              :         }
    1255              :       return true;
    1256              : 
    1257        70699 :     case OPT_mprefetchi:
    1258        70699 :       if (value)
    1259              :         {
    1260        70687 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_PREFETCHI_SET;
    1261        70687 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PREFETCHI_SET;
    1262              :         }
    1263              :       else
    1264              :         {
    1265           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_PREFETCHI_UNSET;
    1266           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PREFETCHI_UNSET;
    1267              :         }
    1268              :       return true;
    1269              : 
    1270       157711 :     case OPT_mraoint:
    1271       157711 :       if (value)
    1272              :         {
    1273       157699 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_RAOINT_SET;
    1274       157699 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_RAOINT_SET;
    1275              :         }
    1276              :       else
    1277              :         {
    1278           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_RAOINT_UNSET;
    1279           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_RAOINT_UNSET;
    1280              :         }
    1281              :       return true;
    1282              : 
    1283        75890 :     case OPT_mamx_complex:
    1284        75890 :       if (value)
    1285              :         {
    1286        75878 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_COMPLEX_SET;
    1287        75878 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_COMPLEX_SET;
    1288              :         }
    1289              :       else
    1290              :         {
    1291           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_COMPLEX_UNSET;
    1292           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_COMPLEX_UNSET;
    1293              :         }
    1294              :       return true;
    1295              : 
    1296       195395 :     case OPT_mavxvnniint16:
    1297       195395 :       if (value)
    1298              :         {
    1299       195382 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVXVNNIINT16_SET;
    1300       195382 :           opts->x_ix86_isa_flags2_explicit |=
    1301              :             OPTION_MASK_ISA2_AVXVNNIINT16_SET;
    1302       195382 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
    1303       195382 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
    1304              :         }
    1305              :       else
    1306              :         {
    1307           13 :           opts->x_ix86_isa_flags2 &=
    1308              :             ~OPTION_MASK_ISA2_AVXVNNIINT16_UNSET;
    1309           13 :           opts->x_ix86_isa_flags2_explicit |=
    1310              :             OPTION_MASK_ISA2_AVXVNNIINT16_UNSET;
    1311              :         }
    1312              :       return true;
    1313              : 
    1314       105388 :     case OPT_msm3:
    1315       105388 :       if (value)
    1316              :         {
    1317       105376 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_SM3_SET;
    1318       105376 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SM3_SET;
    1319       105376 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX_SET;
    1320       105376 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_SET;
    1321              :         }
    1322              :       else
    1323              :         {
    1324           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SM3_UNSET;
    1325           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SM3_UNSET;
    1326              :         }
    1327              :       return true;
    1328              : 
    1329       105802 :     case OPT_msha512:
    1330       105802 :       if (value)
    1331              :         {
    1332       105790 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_SHA512_SET;
    1333       105790 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SHA512_SET;
    1334       105790 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX_SET;
    1335       105790 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_SET;
    1336              :         }
    1337              :       else
    1338              :         {
    1339           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SHA512_UNSET;
    1340           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SHA512_UNSET;
    1341              :         }
    1342              :       return true;
    1343              : 
    1344       140873 :     case OPT_msm4:
    1345       140873 :       if (value)
    1346              :         {
    1347       140861 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_SM4_SET;
    1348       140861 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SM4_SET;
    1349       140861 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX_SET;
    1350       140861 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_SET;
    1351              :         }
    1352              :       else
    1353              :         {
    1354           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SM4_UNSET;
    1355           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SM4_UNSET;
    1356              :         }
    1357              :       return true;
    1358              : 
    1359          118 :     case OPT_mapxf:
    1360          118 :       if (value)
    1361              :         {
    1362           84 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_APX_F_SET;
    1363           84 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_APX_F_SET;
    1364           84 :           opts->x_ix86_apx_features = apx_all;
    1365              :         }
    1366              :       else
    1367              :         {
    1368           34 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_APX_F_UNSET;
    1369           34 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_APX_F_UNSET;
    1370           34 :           opts->x_ix86_apx_features = apx_none;
    1371              :         }
    1372              :       return true;
    1373              : 
    1374        27121 :     case OPT_musermsr:
    1375        27121 :       if (value)
    1376              :         {
    1377        27109 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_USER_MSR_SET;
    1378        27109 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_USER_MSR_SET;
    1379              :         }
    1380              :       else
    1381              :         {
    1382           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_USER_MSR_UNSET;
    1383           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_USER_MSR_UNSET;
    1384              :         }
    1385              :       return true;
    1386              : 
    1387           27 :     case OPT_mavx10_1:
    1388           27 :       if (value)
    1389              :         {
    1390           15 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX10_1_SET;
    1391           15 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX10_1_SET;
    1392           15 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX10_1_SET;
    1393           15 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX10_1_SET;
    1394              :         }
    1395              :       else
    1396              :         {
    1397           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX10_1_UNSET;
    1398           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX10_1_UNSET;
    1399              :         }
    1400              :       return true;
    1401              : 
    1402      7609706 :     case OPT_mavx10_2:
    1403      7609706 :       if (value)
    1404              :         {
    1405      7609692 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX10_2_SET;
    1406      7609692 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX10_2_SET;
    1407      7609692 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX10_1_SET;
    1408      7609692 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX10_1_SET;
    1409              :         }
    1410              :       else
    1411              :         {
    1412           14 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX10_2_UNSET;
    1413           14 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX10_2_UNSET;
    1414              :         }
    1415              :       return true;
    1416              : 
    1417        75893 :     case OPT_mamx_avx512:
    1418        75893 :       if (value)
    1419              :         {
    1420        75877 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_AVX512_SET;
    1421        75877 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_AVX512_SET;
    1422        75877 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;
    1423        75877 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;
    1424              :         }
    1425              :       else
    1426              :         {
    1427           16 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_AVX512_UNSET;
    1428           16 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_AVX512_UNSET;
    1429              :         }
    1430              :       return true;
    1431              : 
    1432        70712 :     case OPT_mamx_fp8:
    1433        70712 :       if (value)
    1434              :         {
    1435        70700 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_FP8_SET;
    1436        70700 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_FP8_SET;
    1437              :         }
    1438              :       else
    1439              :         {
    1440           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_FP8_UNSET;
    1441           12 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_FP8_UNSET;
    1442              :         }
    1443              :       return true;
    1444              : 
    1445       486377 :     case OPT_mmovrs:
    1446       486377 :       if (value)
    1447              :         {
    1448       486364 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MOVRS_SET;
    1449       486364 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MOVRS_SET;
    1450              :         }
    1451              :       else
    1452              :         {
    1453           13 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_MOVRS_UNSET;
    1454           13 :           opts->x_ix86_isa_flags2_explicit |=
    1455              :             OPTION_MASK_ISA2_MOVRS_UNSET;
    1456              :         }
    1457              :       return true;
    1458              : 
    1459        75803 :     case OPT_mamx_movrs:
    1460        75803 :       if (value)
    1461              :         {
    1462        75791 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_MOVRS_SET;
    1463        75791 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_MOVRS_SET;
    1464              :         }
    1465              :       else
    1466              :         {
    1467           12 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_MOVRS_UNSET;
    1468           12 :           opts->x_ix86_isa_flags2_explicit |=
    1469              :             OPTION_MASK_ISA2_AMX_MOVRS_UNSET;
    1470              :         }
    1471              :       return true;
    1472              : 
    1473       357687 :     case OPT_mfma:
    1474       357687 :       if (value)
    1475              :         {
    1476       357675 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FMA_SET;
    1477       357675 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FMA_SET;
    1478              :         }
    1479              :       else
    1480              :         {
    1481           12 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_FMA_UNSET;
    1482           12 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FMA_UNSET;
    1483              :         }
    1484              :       return true;
    1485              : 
    1486       121679 :     case OPT_mrtm:
    1487       121679 :       if (value)
    1488              :         {
    1489       121666 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_RTM_SET;
    1490       121666 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RTM_SET;
    1491              :         }
    1492              :       else
    1493              :         {
    1494           13 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_RTM_UNSET;
    1495           13 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RTM_UNSET;
    1496              :         }
    1497              :       return true;
    1498              : 
    1499          198 :     case OPT_msse4:
    1500          198 :       if (value)
    1501              :         {
    1502          151 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4_SET;
    1503          151 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_SET;
    1504              :         }
    1505              :       else
    1506              :         {
    1507           47 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_UNSET;
    1508           47 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_UNSET;
    1509           47 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SSE4_UNSET;
    1510           47 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SSE4_UNSET;
    1511              :         }
    1512              :       return true;
    1513              : 
    1514        77382 :     case OPT_msse4a:
    1515        77382 :       if (value)
    1516              :         {
    1517        77380 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4A_SET;
    1518        77380 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_SET;
    1519              :         }
    1520              :       else
    1521              :         {
    1522            2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4A_UNSET;
    1523            2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_UNSET;
    1524              :         }
    1525              :       return true;
    1526              : 
    1527        92086 :     case OPT_mfma4:
    1528        92086 :       if (value)
    1529              :         {
    1530        92055 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FMA4_SET;
    1531        92055 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FMA4_SET;
    1532              :         }
    1533              :       else
    1534              :         {
    1535           31 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_FMA4_UNSET;
    1536           31 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FMA4_UNSET;
    1537              :         }
    1538              :       return true;
    1539              : 
    1540       181782 :    case OPT_mxop:
    1541       181782 :       if (value)
    1542              :         {
    1543       181749 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XOP_SET;
    1544       181749 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XOP_SET;
    1545              :         }
    1546              :       else
    1547              :         {
    1548           33 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XOP_UNSET;
    1549           33 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XOP_UNSET;
    1550              :         }
    1551              :       return true;
    1552              : 
    1553       124861 :    case OPT_mlwp:
    1554       124861 :       if (value)
    1555              :         {
    1556       124848 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_LWP_SET;
    1557       124848 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_LWP_SET;
    1558              :         }
    1559              :       else
    1560              :         {
    1561           13 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_LWP_UNSET;
    1562           13 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_LWP_UNSET;
    1563              :         }
    1564              :       return true;
    1565              : 
    1566        58479 :     case OPT_mabm:
    1567        58479 :       if (value)
    1568              :         {
    1569        58475 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_ABM_SET;
    1570        58475 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_ABM_SET;
    1571              :         }
    1572              :       else
    1573              :         {
    1574            4 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_ABM_UNSET;
    1575            4 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_ABM_UNSET;
    1576              :         }
    1577              :       return true;
    1578              : 
    1579       316331 :     case OPT_mbmi:
    1580       316331 :       if (value)
    1581              :         {
    1582       316330 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_BMI_SET;
    1583       316330 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_BMI_SET;
    1584              :         }
    1585              :       else
    1586              :         {
    1587            1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_BMI_UNSET;
    1588            1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_BMI_UNSET;
    1589              :         }
    1590              :       return true;
    1591              : 
    1592       133876 :     case OPT_mbmi2:
    1593       133876 :       if (value)
    1594              :         {
    1595       133871 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_BMI2_SET;
    1596       133871 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_BMI2_SET;
    1597              :         }
    1598              :       else
    1599              :         {
    1600            5 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_BMI2_UNSET;
    1601            5 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_BMI2_UNSET;
    1602              :         }
    1603              :       return true;
    1604              : 
    1605       114521 :     case OPT_mlzcnt:
    1606       114521 :       if (value)
    1607              :         {
    1608       114515 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_LZCNT_SET;
    1609       114515 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_LZCNT_SET;
    1610              :         }
    1611              :       else
    1612              :         {
    1613            6 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_LZCNT_UNSET;
    1614            6 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_LZCNT_UNSET;
    1615              :         }
    1616              :       return true;
    1617              : 
    1618       265955 :     case OPT_mtbm:
    1619       265955 :       if (value)
    1620              :         {
    1621       265942 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_TBM_SET;
    1622       265942 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_TBM_SET;
    1623              :         }
    1624              :       else
    1625              :         {
    1626           13 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_TBM_UNSET;
    1627           13 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_TBM_UNSET;
    1628              :         }
    1629              :       return true;
    1630              : 
    1631        64568 :     case OPT_mpopcnt:
    1632        64568 :       if (value)
    1633              :         {
    1634        64552 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_POPCNT_SET;
    1635        64552 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_POPCNT_SET;
    1636              :         }
    1637              :       else
    1638              :         {
    1639           16 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_POPCNT_UNSET;
    1640           16 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_POPCNT_UNSET;
    1641              :         }
    1642              :       return true;
    1643              : 
    1644           17 :     case OPT_msahf:
    1645           17 :       if (value)
    1646              :         {
    1647           15 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SAHF_SET;
    1648           15 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SAHF_SET;
    1649              :         }
    1650              :       else
    1651              :         {
    1652            2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SAHF_UNSET;
    1653            2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SAHF_UNSET;
    1654              :         }
    1655              :       return true;
    1656              : 
    1657           67 :     case OPT_mcx16:
    1658           67 :       if (value)
    1659              :         {
    1660           65 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CX16_SET;
    1661           65 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CX16_SET;
    1662              :         }
    1663              :       else
    1664              :         {
    1665            2 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_CX16_UNSET;
    1666            2 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CX16_UNSET;
    1667              :         }
    1668              :       return true;
    1669              : 
    1670           30 :     case OPT_mmovbe:
    1671           30 :       if (value)
    1672              :         {
    1673           25 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MOVBE_SET;
    1674           25 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MOVBE_SET;
    1675              :         }
    1676              :       else
    1677              :         {
    1678            5 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_MOVBE_UNSET;
    1679            5 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MOVBE_UNSET;
    1680              :         }
    1681              :       return true;
    1682              : 
    1683        11134 :     case OPT_mcrc32:
    1684        11134 :       if (value)
    1685              :         {
    1686        11130 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_CRC32_SET;
    1687        11130 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CRC32_SET;
    1688              :         }
    1689              :       else
    1690              :         {
    1691            4 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_CRC32_UNSET;
    1692            4 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CRC32_UNSET;
    1693              :         }
    1694              :       return true;
    1695              : 
    1696        83760 :     case OPT_maes:
    1697        83760 :       if (value)
    1698              :         {
    1699        83758 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AES_SET;
    1700        83758 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AES_SET;
    1701              :         }
    1702              :       else
    1703              :         {
    1704            2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AES_UNSET;
    1705            2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AES_UNSET;
    1706              :         }
    1707              :       return true;
    1708              : 
    1709       144887 :     case OPT_msha:
    1710       144887 :       if (value)
    1711              :         {
    1712       144886 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SHA_SET;
    1713       144886 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SHA_SET;
    1714              :         }
    1715              :       else
    1716              :         {
    1717            1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SHA_UNSET;
    1718            1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SHA_UNSET;
    1719              :         }
    1720              :       return true;
    1721              : 
    1722        73777 :     case OPT_mpclmul:
    1723        73777 :       if (value)
    1724              :         {
    1725        73776 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PCLMUL_SET;
    1726        73776 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PCLMUL_SET;
    1727              :         }
    1728              :       else
    1729              :         {
    1730            1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_PCLMUL_UNSET;
    1731            1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PCLMUL_UNSET;
    1732              :         }
    1733              :       return true;
    1734              : 
    1735       156495 :     case OPT_mfsgsbase:
    1736       156495 :       if (value)
    1737              :         {
    1738       156494 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FSGSBASE_SET;
    1739       156494 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FSGSBASE_SET;
    1740              :         }
    1741              :       else
    1742              :         {
    1743            1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_FSGSBASE_UNSET;
    1744            1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FSGSBASE_UNSET;
    1745              :         }
    1746              :       return true;
    1747              : 
    1748       112429 :     case OPT_mrdrnd:
    1749       112429 :       if (value)
    1750              :         {
    1751       112428 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_RDRND_SET;
    1752       112428 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RDRND_SET;
    1753              :         }
    1754              :       else
    1755              :         {
    1756            1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_RDRND_UNSET;
    1757            1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RDRND_UNSET;
    1758              :         }
    1759              :       return true;
    1760              : 
    1761        25368 :     case OPT_mptwrite:
    1762        25368 :       if (value)
    1763              :         {
    1764        25357 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_PTWRITE_SET;
    1765        25357 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PTWRITE_SET;
    1766              :         }
    1767              :       else
    1768              :         {
    1769           11 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_PTWRITE_UNSET;
    1770           11 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PTWRITE_UNSET;
    1771              :         }
    1772              :       return true;
    1773              : 
    1774       132163 :     case OPT_mf16c:
    1775       132163 :       if (value)
    1776              :         {
    1777       132162 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_F16C_SET;
    1778       132162 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_F16C_SET;
    1779              :         }
    1780              :       else
    1781              :         {
    1782            1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_F16C_UNSET;
    1783            1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_F16C_UNSET;
    1784              :         }
    1785              :       return true;
    1786              : 
    1787        60647 :     case OPT_mfxsr:
    1788        60647 :       if (value)
    1789              :         {
    1790        60645 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FXSR_SET;
    1791        60645 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FXSR_SET;
    1792              :         }
    1793              :       else
    1794              :         {
    1795            2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_FXSR_UNSET;
    1796            2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FXSR_UNSET;
    1797              :         }
    1798              :       return true;
    1799              : 
    1800         6927 :     case OPT_mxsave:
    1801         6927 :       if (value)
    1802              :         {
    1803         6921 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVE_SET;
    1804         6921 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVE_SET;
    1805              :         }
    1806              :       else
    1807              :         {
    1808            6 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XSAVE_UNSET;
    1809            6 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVE_UNSET;
    1810            6 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_XSAVE_UNSET;
    1811            6 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_XSAVE_UNSET;
    1812              :         }
    1813              :       return true;
    1814              : 
    1815        85745 :     case OPT_mxsaveopt:
    1816        85745 :       if (value)
    1817              :         {
    1818        85744 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVEOPT_SET;
    1819        85744 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVEOPT_SET;
    1820              :         }
    1821              :       else
    1822              :         {
    1823            1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XSAVEOPT_UNSET;
    1824            1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVEOPT_UNSET;
    1825              :         }
    1826              :       return true;
    1827              : 
    1828        71860 :     case OPT_mxsavec:
    1829        71860 :       if (value)
    1830              :         {
    1831        71858 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVEC_SET;
    1832        71858 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVEC_SET;
    1833              :         }
    1834              :       else
    1835              :         {
    1836            2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XSAVEC_UNSET;
    1837            2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVEC_UNSET;
    1838              :         }
    1839              :       return true;
    1840              : 
    1841        91831 :     case OPT_mxsaves:
    1842        91831 :       if (value)
    1843              :         {
    1844        91829 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVES_SET;
    1845        91829 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVES_SET;
    1846              :         }
    1847              :       else
    1848              :         {
    1849            2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XSAVES_UNSET;
    1850            2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVES_UNSET;
    1851              :         }
    1852              :       return true;
    1853              : 
    1854        95835 :     case OPT_mrdseed:
    1855        95835 :       if (value)
    1856              :         {
    1857        95833 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_RDSEED_SET;
    1858        95833 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RDSEED_SET;
    1859              :         }
    1860              :       else
    1861              :         {
    1862            2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_RDSEED_UNSET;
    1863            2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RDSEED_UNSET;
    1864              :         }
    1865              :       return true;
    1866              : 
    1867        59107 :     case OPT_mprfchw:
    1868        59107 :       if (value)
    1869              :         {
    1870        59105 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PRFCHW_SET;
    1871        59105 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PRFCHW_SET;
    1872              :         }
    1873              :       else
    1874              :         {
    1875            2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_PRFCHW_UNSET;
    1876            2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PRFCHW_UNSET;
    1877              :         }
    1878              :       return true;
    1879              : 
    1880        60637 :     case OPT_madx:
    1881        60637 :       if (value)
    1882              :         {
    1883        60633 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_ADX_SET;
    1884        60633 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_ADX_SET;
    1885              :         }
    1886              :       else
    1887              :         {
    1888            4 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_ADX_UNSET;
    1889            4 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_ADX_UNSET;
    1890              :         }
    1891              :       return true;
    1892              : 
    1893        61921 :     case OPT_mclflushopt:
    1894        61921 :       if (value)
    1895              :         {
    1896        61919 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_CLFLUSHOPT_SET;
    1897        61919 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CLFLUSHOPT_SET;
    1898              :         }
    1899              :       else
    1900              :         {
    1901            2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_CLFLUSHOPT_UNSET;
    1902            2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CLFLUSHOPT_UNSET;
    1903              :         }
    1904              :       return true;
    1905              : 
    1906        61940 :     case OPT_mclwb:
    1907        61940 :       if (value)
    1908              :         {
    1909        61938 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_CLWB_SET;
    1910        61938 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CLWB_SET;
    1911              :         }
    1912              :       else
    1913              :         {
    1914            2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_CLWB_UNSET;
    1915            2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CLWB_UNSET;
    1916              :         }
    1917              :       return true;
    1918              : 
    1919        71453 :     case OPT_mmwaitx:
    1920        71453 :       if (value)
    1921              :         {
    1922        71451 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MWAITX_SET;
    1923        71451 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MWAITX_SET;
    1924              :         }
    1925              :       else
    1926              :         {
    1927            2 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_MWAITX_UNSET;
    1928            2 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MWAITX_UNSET;
    1929              :         }
    1930              :       return true;
    1931              : 
    1932        25693 :     case OPT_mmwait:
    1933        25693 :       if (value)
    1934              :         {
    1935        25692 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MWAIT_SET;
    1936        25692 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MWAIT_SET;
    1937              :         }
    1938              :       else
    1939              :         {
    1940            1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_MWAIT_UNSET;
    1941            1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MWAIT_UNSET;
    1942              :         }
    1943              :       return true;
    1944              : 
    1945        61367 :     case OPT_mclzero:
    1946        61367 :       if (value)
    1947              :         {
    1948        61365 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CLZERO_SET;
    1949        61365 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CLZERO_SET;
    1950              :         }
    1951              :       else
    1952              :         {
    1953            2 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_CLZERO_UNSET;
    1954            2 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CLZERO_UNSET;
    1955              :         }
    1956              :       return true;
    1957              : 
    1958        71966 :     case OPT_mpku:
    1959        71966 :       if (value)
    1960              :         {
    1961        71953 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PKU_SET;
    1962        71953 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PKU_SET;
    1963              :         }
    1964              :       else
    1965              :         {
    1966           13 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_PKU_UNSET;
    1967           13 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PKU_UNSET;
    1968              :         }
    1969              :       return true;
    1970              : 
    1971              : 
    1972            1 :     case OPT_malign_loops_:
    1973            1 :       warning_at (loc, 0, "%<-malign-loops%> is obsolete, "
    1974              :                   "use %<-falign-loops%>");
    1975            1 :       if (value > MAX_CODE_ALIGN)
    1976            0 :         error_at (loc, "%<-malign-loops=%d%> is not between 0 and %d",
    1977              :                   value, MAX_CODE_ALIGN);
    1978              :       else
    1979            1 :         set_malign_value (&opts->x_str_align_loops, value);
    1980              :       return true;
    1981              : 
    1982            0 :     case OPT_malign_jumps_:
    1983            0 :       warning_at (loc, 0, "%<-malign-jumps%> is obsolete, "
    1984              :                   "use %<-falign-jumps%>");
    1985            0 :       if (value > MAX_CODE_ALIGN)
    1986            0 :         error_at (loc, "%<-malign-jumps=%d%> is not between 0 and %d",
    1987              :                   value, MAX_CODE_ALIGN);
    1988              :       else
    1989            0 :         set_malign_value (&opts->x_str_align_jumps, value);
    1990              :       return true;
    1991              : 
    1992            0 :     case OPT_malign_functions_:
    1993            0 :       warning_at (loc, 0,
    1994              :                   "%<-malign-functions%> is obsolete, "
    1995              :                   "use %<-falign-functions%>");
    1996            0 :       if (value > MAX_CODE_ALIGN)
    1997            0 :         error_at (loc, "%<-malign-functions=%d%> is not between 0 and %d",
    1998              :                   value, MAX_CODE_ALIGN);
    1999              :       else
    2000            0 :         set_malign_value (&opts->x_str_align_functions, value);
    2001              :       return true;
    2002              : 
    2003           20 :     case OPT_mbranch_cost_:
    2004           20 :       if (value > 5)
    2005              :         {
    2006            0 :           error_at (loc, "%<-mbranch-cost=%d%> is not between 0 and 5", value);
    2007            0 :           opts->x_ix86_branch_cost = 5;
    2008              :         }
    2009              :       return true;
    2010              : 
    2011              :     default:
    2012              :       return true;
    2013              :     }
    2014              : }
    2015              : 
    2016              : static const struct default_options ix86_option_optimization_table[] =
    2017              :   {
    2018              :     /* Enable redundant extension instructions removal at -O2 and higher.  */
    2019              :     { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 },
    2020              :     /* Enable function splitting at -O2 and higher.  */
    2021              :     { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_and_partition, NULL, 1 },
    2022              :     /* The STC algorithm produces the smallest code at -Os, for x86.  */
    2023              :     { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_algorithm_, NULL,
    2024              :       REORDER_BLOCKS_ALGORITHM_STC },
    2025              : 
    2026              :     /* Turn on -funroll-loops with -munroll-only-small-loops to enable small
    2027              :        loop unrolling at -O2.  */
    2028              :     { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_funroll_loops, NULL, 1 },
    2029              :     { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_munroll_only_small_loops, NULL, 1 },
    2030              :     /* Turns off -frename-registers and -fweb which are enabled by
    2031              :        funroll-loops.  */
    2032              :     { OPT_LEVELS_ALL, OPT_frename_registers, NULL, 0 },
    2033              :     { OPT_LEVELS_ALL, OPT_fweb, NULL, 0 },
    2034              :     /* Turn off -fschedule-insns by default.  It tends to make the
    2035              :        problem with not enough registers even worse.  */
    2036              :     { OPT_LEVELS_ALL, OPT_fschedule_insns, NULL, 0 },
    2037              : 
    2038              : #ifdef SUBTARGET_OPTIMIZATION_OPTIONS
    2039              :     SUBTARGET_OPTIMIZATION_OPTIONS,
    2040              : #endif
    2041              :     { OPT_LEVELS_NONE, 0, NULL, 0 }
    2042              :   };
    2043              : 
    2044              : /* Implement TARGET_OPTION_INIT_STRUCT.  */
    2045              : 
    2046              : static void
    2047     48374170 : ix86_option_init_struct (struct gcc_options *opts)
    2048              : {
    2049     48374170 :   if (TARGET_MACHO)
    2050              :     /* The Darwin libraries never set errno, so we might as well
    2051              :        avoid calling them when that's the only reason we would.  */
    2052              :     opts->x_flag_errno_math = 0;
    2053              : 
    2054     48374170 :   opts->x_flag_pcc_struct_return = 2;
    2055     48374170 :   opts->x_flag_asynchronous_unwind_tables = 2;
    2056     48374170 : }
    2057              : 
    2058              : /* On the x86 -fsplit-stack and -fstack-protector both use the same
    2059              :    field in the TCB, so they cannot be used together.  */
    2060              : 
    2061              : static bool
    2062         6364 : ix86_supports_split_stack (bool report,
    2063              :                            struct gcc_options *opts ATTRIBUTE_UNUSED)
    2064              : {
    2065              : #if defined(TARGET_THREAD_SPLIT_STACK_OFFSET) && defined(OPTION_GLIBC_P)
    2066         6364 :   if (!OPTION_GLIBC_P (opts))
    2067              : #endif
    2068              :     {
    2069            0 :       if (report)
    2070            0 :         error ("%<-fsplit-stack%> currently only supported on GNU/Linux");
    2071            0 :       return false;
    2072              :     }
    2073              : 
    2074              :   bool ret = true;
    2075              : 
    2076              : #ifdef TARGET_THREAD_SPLIT_STACK_OFFSET
    2077              :   if (!HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
    2078              :     {
    2079              :       if (report)
    2080              :         error ("%<-fsplit-stack%> requires "
    2081              :                "assembler support for CFI directives");
    2082              :       ret = false;
    2083              :     }
    2084              : #endif
    2085              : 
    2086              :   return ret;
    2087              : }
    2088              : 
    2089              : /* Implement TARGET_EXCEPT_UNWIND_INFO.  */
    2090              : 
    2091              : static enum unwind_info_type
    2092      9230545 : i386_except_unwind_info (struct gcc_options *opts)
    2093              : {
    2094              :   /* Honor the --enable-sjlj-exceptions configure switch.  */
    2095              : #ifdef CONFIG_SJLJ_EXCEPTIONS
    2096              :   if (CONFIG_SJLJ_EXCEPTIONS)
    2097              :     return UI_SJLJ;
    2098              : #endif
    2099              : 
    2100              :   /* On windows 64, prefer SEH exceptions over anything else.  */
    2101      9230545 :   if (TARGET_64BIT && DEFAULT_ABI == MS_ABI && opts->x_flag_unwind_tables)
    2102              :     return UI_SEH;
    2103              : 
    2104      9230545 :   if (DWARF2_UNWIND_INFO)
    2105      9230545 :     return UI_DWARF2;
    2106              : 
    2107              :   return UI_SJLJ;
    2108              : }
    2109              : 
    2110              : #undef  TARGET_EXCEPT_UNWIND_INFO
    2111              : #define TARGET_EXCEPT_UNWIND_INFO  i386_except_unwind_info
    2112              : 
    2113              : #undef TARGET_DEFAULT_TARGET_FLAGS
    2114              : #define TARGET_DEFAULT_TARGET_FLAGS     \
    2115              :   (TARGET_DEFAULT                       \
    2116              :    | TARGET_SUBTARGET_DEFAULT           \
    2117              :    | TARGET_TLS_DIRECT_SEG_REFS_DEFAULT)
    2118              : 
    2119              : #undef TARGET_HANDLE_OPTION
    2120              : #define TARGET_HANDLE_OPTION ix86_handle_option
    2121              : 
    2122              : #undef TARGET_OPTION_OPTIMIZATION_TABLE
    2123              : #define TARGET_OPTION_OPTIMIZATION_TABLE ix86_option_optimization_table
    2124              : #undef TARGET_OPTION_INIT_STRUCT
    2125              : #define TARGET_OPTION_INIT_STRUCT ix86_option_init_struct
    2126              : 
    2127              : #undef TARGET_SUPPORTS_SPLIT_STACK
    2128              : #define TARGET_SUPPORTS_SPLIT_STACK ix86_supports_split_stack
    2129              : 
    2130              : /* This table must be in sync with enum processor_type in i386.h.  */
    2131              : const char *const processor_names[] =
    2132              : {
    2133              :   "generic",
    2134              :   "i386",
    2135              :   "i486",
    2136              :   "pentium",
    2137              :   "lakemont",
    2138              :   "pentiumpro",
    2139              :   "pentium4",
    2140              :   "nocona",
    2141              :   "core2",
    2142              :   "nehalem",
    2143              :   "sandybridge",
    2144              :   "haswell",
    2145              :   "bonnell",
    2146              :   "silvermont",
    2147              :   "goldmont",
    2148              :   "goldmont-plus",
    2149              :   "tremont",
    2150              :   "sierraforest",
    2151              :   "grandridge",
    2152              :   "clearwaterforest",
    2153              :   "skylake",
    2154              :   "skylake-avx512",
    2155              :   "cannonlake",
    2156              :   "icelake-client",
    2157              :   "icelake-server",
    2158              :   "cascadelake",
    2159              :   "tigerlake",
    2160              :   "cooperlake",
    2161              :   "sapphirerapids",
    2162              :   "alderlake",
    2163              :   "rocketlake",
    2164              :   "graniterapids",
    2165              :   "graniterapids-d",
    2166              :   "arrowlake",
    2167              :   "arrowlake-s",
    2168              :   "pantherlake",
    2169              :   "diamondrapids",
    2170              :   "novalake",
    2171              :   "intel",
    2172              :   "lujiazui",
    2173              :   "yongfeng",
    2174              :   "shijidadao",
    2175              :   "geode",
    2176              :   "k6",
    2177              :   "athlon",
    2178              :   "k8",
    2179              :   "amdfam10",
    2180              :   "bdver1",
    2181              :   "bdver2",
    2182              :   "bdver3",
    2183              :   "bdver4",
    2184              :   "btver1",
    2185              :   "btver2",
    2186              :   "znver1",
    2187              :   "znver2",
    2188              :   "znver3",
    2189              :   "znver4",
    2190              :   "znver5",
    2191              :   "znver6",
    2192              :   "c86-4g-m4",
    2193              :   "c86-4g-m6",
    2194              :   "c86-4g-m7",
    2195              :   "c86-4g-m8"
    2196              : };
    2197              : 
    2198              : /* Guarantee that the array is aligned with enum processor_type.  */
    2199              : STATIC_ASSERT (ARRAY_SIZE (processor_names) == PROCESSOR_max);
    2200              : 
    2201              : const pta processor_alias_table[] =
    2202              : {
    2203              :   {"i386", PROCESSOR_I386, CPU_NONE, 0, 0, P_NONE},
    2204              :   {"i486", PROCESSOR_I486, CPU_NONE, 0, 0, P_NONE},
    2205              :   {"i586", PROCESSOR_PENTIUM, CPU_PENTIUM, 0, 0, P_NONE},
    2206              :   {"pentium", PROCESSOR_PENTIUM, CPU_PENTIUM, 0, 0, P_NONE},
    2207              :   {"lakemont", PROCESSOR_LAKEMONT, CPU_PENTIUM, PTA_NO_80387,
    2208              :     0, P_NONE},
    2209              :   {"pentium-mmx", PROCESSOR_PENTIUM, CPU_PENTIUM, PTA_MMX, 0, P_NONE},
    2210              :   {"winchip-c6", PROCESSOR_I486, CPU_NONE, PTA_MMX, 0, P_NONE},
    2211              :   {"winchip2", PROCESSOR_I486, CPU_NONE, PTA_MMX | PTA_3DNOW,
    2212              :     0, P_NONE},
    2213              :   {"c3", PROCESSOR_I486, CPU_NONE, PTA_MMX | PTA_3DNOW, 0, P_NONE},
    2214              :   {"samuel-2", PROCESSOR_I486, CPU_NONE, PTA_MMX | PTA_3DNOW,
    2215              :     0, P_NONE},
    2216              :   {"c3-2", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    2217              :     PTA_MMX | PTA_SSE | PTA_FXSR, 0, P_NONE},
    2218              :   {"nehemiah", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    2219              :     PTA_MMX | PTA_SSE | PTA_FXSR, 0, P_NONE},
    2220              :   {"c7", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    2221              :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_FXSR, 0, P_NONE},
    2222              :   {"esther", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    2223              :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_FXSR, 0, P_NONE},
    2224              :   {"i686", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO, 0, 0, P_NONE},
    2225              :   {"pentiumpro", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO, 0, 0, P_NONE},
    2226              :   {"pentium2", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO, PTA_MMX | PTA_FXSR,
    2227              :     0, P_NONE},
    2228              :   {"pentium3", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    2229              :     PTA_MMX | PTA_SSE | PTA_FXSR, 0, P_NONE},
    2230              :   {"pentium3m", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    2231              :     PTA_MMX | PTA_SSE | PTA_FXSR, 0, P_NONE},
    2232              :   {"pentium-m", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    2233              :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_FXSR, 0, P_NONE},
    2234              :   {"pentium4", PROCESSOR_PENTIUM4, CPU_NONE,
    2235              :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_FXSR, 0, P_NONE},
    2236              :   {"pentium4m", PROCESSOR_PENTIUM4, CPU_NONE,
    2237              :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_FXSR, 0, P_NONE},
    2238              :   {"prescott", PROCESSOR_NOCONA, CPU_NONE,
    2239              :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_FXSR, 0, P_NONE},
    2240              :   {"nocona", PROCESSOR_NOCONA, CPU_NONE,
    2241              :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    2242              :       | PTA_CX16 | PTA_NO_SAHF | PTA_FXSR, 0, P_NONE},
    2243              :   {"core2", PROCESSOR_CORE2, CPU_CORE2, PTA_CORE2,
    2244              :    M_CPU_TYPE (INTEL_CORE2), P_PROC_SSSE3},
    2245              :   {"nehalem", PROCESSOR_NEHALEM, CPU_NEHALEM, PTA_NEHALEM,
    2246              :     M_CPU_SUBTYPE (INTEL_COREI7_NEHALEM), P_PROC_DYNAMIC},
    2247              :   {"corei7", PROCESSOR_NEHALEM, CPU_NEHALEM, PTA_NEHALEM,
    2248              :     M_CPU_TYPE (INTEL_COREI7), P_PROC_DYNAMIC},
    2249              :   {"westmere", PROCESSOR_NEHALEM, CPU_NEHALEM, PTA_WESTMERE,
    2250              :     M_CPU_SUBTYPE (INTEL_COREI7_WESTMERE), P_PROC_DYNAMIC},
    2251              :   {"sandybridge", PROCESSOR_SANDYBRIDGE, CPU_NEHALEM,
    2252              :     PTA_SANDYBRIDGE,
    2253              :     M_CPU_SUBTYPE (INTEL_COREI7_SANDYBRIDGE), P_PROC_DYNAMIC},
    2254              :   {"corei7-avx", PROCESSOR_SANDYBRIDGE, CPU_NEHALEM,
    2255              :     PTA_SANDYBRIDGE, 0, P_PROC_DYNAMIC},
    2256              :   {"ivybridge", PROCESSOR_SANDYBRIDGE, CPU_NEHALEM,
    2257              :     PTA_IVYBRIDGE,
    2258              :     M_CPU_SUBTYPE (INTEL_COREI7_IVYBRIDGE), P_PROC_DYNAMIC},
    2259              :   {"core-avx-i", PROCESSOR_SANDYBRIDGE, CPU_NEHALEM,
    2260              :     PTA_IVYBRIDGE, 0, P_PROC_DYNAMIC},
    2261              :   {"haswell", PROCESSOR_HASWELL, CPU_HASWELL, PTA_HASWELL,
    2262              :     M_CPU_SUBTYPE (INTEL_COREI7_HASWELL), P_PROC_DYNAMIC},
    2263              :   {"core-avx2", PROCESSOR_HASWELL, CPU_HASWELL, PTA_HASWELL,
    2264              :     0, P_PROC_DYNAMIC},
    2265              :   {"broadwell", PROCESSOR_HASWELL, CPU_HASWELL, PTA_BROADWELL,
    2266              :     M_CPU_SUBTYPE (INTEL_COREI7_BROADWELL), P_PROC_DYNAMIC},
    2267              :   {"skylake", PROCESSOR_SKYLAKE, CPU_HASWELL, PTA_SKYLAKE,
    2268              :     M_CPU_SUBTYPE (INTEL_COREI7_SKYLAKE), P_PROC_AVX2},
    2269              :   {"skylake-avx512", PROCESSOR_SKYLAKE_AVX512, CPU_HASWELL,
    2270              :     PTA_SKYLAKE_AVX512,
    2271              :     M_CPU_SUBTYPE (INTEL_COREI7_SKYLAKE_AVX512), P_PROC_AVX512F},
    2272              :   {"cannonlake", PROCESSOR_CANNONLAKE, CPU_HASWELL, PTA_CANNONLAKE,
    2273              :     M_CPU_SUBTYPE (INTEL_COREI7_CANNONLAKE), P_PROC_AVX512F},
    2274              :   {"icelake-client", PROCESSOR_ICELAKE_CLIENT, CPU_HASWELL,
    2275              :     PTA_ICELAKE_CLIENT,
    2276              :     M_CPU_SUBTYPE (INTEL_COREI7_ICELAKE_CLIENT), P_PROC_AVX512F},
    2277              :   {"rocketlake", PROCESSOR_ROCKETLAKE, CPU_HASWELL,
    2278              :     PTA_ROCKETLAKE,
    2279              :     M_CPU_SUBTYPE (INTEL_COREI7_ROCKETLAKE), P_PROC_AVX512F},
    2280              :   {"icelake-server", PROCESSOR_ICELAKE_SERVER, CPU_HASWELL,
    2281              :     PTA_ICELAKE_SERVER,
    2282              :     M_CPU_SUBTYPE (INTEL_COREI7_ICELAKE_SERVER), P_PROC_AVX512F},
    2283              :   {"cascadelake", PROCESSOR_CASCADELAKE, CPU_HASWELL,
    2284              :     PTA_CASCADELAKE,
    2285              :     M_CPU_SUBTYPE (INTEL_COREI7_CASCADELAKE), P_PROC_AVX512F},
    2286              :   {"tigerlake", PROCESSOR_TIGERLAKE, CPU_HASWELL, PTA_TIGERLAKE,
    2287              :     M_CPU_SUBTYPE (INTEL_COREI7_TIGERLAKE), P_PROC_AVX512F},
    2288              :   {"cooperlake", PROCESSOR_COOPERLAKE, CPU_HASWELL, PTA_COOPERLAKE,
    2289              :     M_CPU_SUBTYPE (INTEL_COREI7_COOPERLAKE), P_PROC_AVX512F},
    2290              :   {"sapphirerapids", PROCESSOR_SAPPHIRERAPIDS, CPU_HASWELL, PTA_SAPPHIRERAPIDS,
    2291              :     M_CPU_SUBTYPE (INTEL_COREI7_SAPPHIRERAPIDS), P_PROC_AVX512F},
    2292              :   {"emeraldrapids", PROCESSOR_SAPPHIRERAPIDS, CPU_HASWELL, PTA_SAPPHIRERAPIDS,
    2293              :     M_CPU_SUBTYPE (INTEL_COREI7_SAPPHIRERAPIDS), P_PROC_AVX512F},
    2294              :   {"alderlake", PROCESSOR_ALDERLAKE, CPU_HASWELL, PTA_ALDERLAKE,
    2295              :     M_CPU_SUBTYPE (INTEL_COREI7_ALDERLAKE), P_PROC_AVX2},
    2296              :   {"raptorlake", PROCESSOR_ALDERLAKE, CPU_HASWELL, PTA_ALDERLAKE,
    2297              :     M_CPU_SUBTYPE (INTEL_COREI7_ALDERLAKE), P_PROC_AVX2},
    2298              :   {"meteorlake", PROCESSOR_ALDERLAKE, CPU_HASWELL, PTA_ALDERLAKE,
    2299              :     M_CPU_SUBTYPE (INTEL_COREI7_ALDERLAKE), P_PROC_AVX2},
    2300              :   {"graniterapids", PROCESSOR_GRANITERAPIDS, CPU_HASWELL, PTA_GRANITERAPIDS,
    2301              :     M_CPU_SUBTYPE (INTEL_COREI7_GRANITERAPIDS), P_PROC_AVX10_1},
    2302              :   {"graniterapids-d", PROCESSOR_GRANITERAPIDS_D, CPU_HASWELL,
    2303              :     PTA_GRANITERAPIDS_D, M_CPU_SUBTYPE (INTEL_COREI7_GRANITERAPIDS_D),
    2304              :     P_PROC_AVX10_1},
    2305              :   {"arrowlake", PROCESSOR_ARROWLAKE, CPU_HASWELL, PTA_ARROWLAKE,
    2306              :     M_CPU_SUBTYPE (INTEL_COREI7_ARROWLAKE), P_PROC_AVX2},
    2307              :   {"arrowlake-s", PROCESSOR_ARROWLAKE_S, CPU_HASWELL, PTA_ARROWLAKE_S,
    2308              :     M_CPU_SUBTYPE (INTEL_COREI7_ARROWLAKE_S), P_PROC_AVX2},
    2309              :   {"lunarlake", PROCESSOR_ARROWLAKE_S, CPU_HASWELL, PTA_ARROWLAKE_S,
    2310              :     M_CPU_SUBTYPE (INTEL_COREI7_ARROWLAKE_S), P_PROC_AVX2},
    2311              :   {"pantherlake", PROCESSOR_PANTHERLAKE, CPU_HASWELL, PTA_PANTHERLAKE,
    2312              :     M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
    2313              :   {"diamondrapids", PROCESSOR_DIAMONDRAPIDS, CPU_HASWELL, PTA_DIAMONDRAPIDS,
    2314              :     M_CPU_SUBTYPE (INTEL_COREI7_DIAMONDRAPIDS), P_PROC_AVX10_2},
    2315              :   {"wildcatlake", PROCESSOR_PANTHERLAKE, CPU_HASWELL, PTA_PANTHERLAKE,
    2316              :     M_CPU_SUBTYPE (INTEL_COREI7_PANTHERLAKE), P_PROC_AVX2},
    2317              :   {"novalake", PROCESSOR_NOVALAKE, CPU_HASWELL, PTA_NOVALAKE,
    2318              :     M_CPU_SUBTYPE (INTEL_COREI7_NOVALAKE), P_PROC_AVX10_2},
    2319              :   {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
    2320              :     M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
    2321              :   {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
    2322              :     M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
    2323              :   {"silvermont", PROCESSOR_SILVERMONT, CPU_SLM, PTA_SILVERMONT,
    2324              :     M_CPU_TYPE (INTEL_SILVERMONT), P_PROC_SSE4_2},
    2325              :   {"slm", PROCESSOR_SILVERMONT, CPU_SLM, PTA_SILVERMONT,
    2326              :     M_CPU_TYPE (INTEL_SILVERMONT), P_PROC_SSE4_2},
    2327              :   {"goldmont", PROCESSOR_GOLDMONT, CPU_GLM, PTA_GOLDMONT,
    2328              :     M_CPU_TYPE (INTEL_GOLDMONT), P_PROC_SSE4_2},
    2329              :   {"goldmont-plus", PROCESSOR_GOLDMONT_PLUS, CPU_GLM, PTA_GOLDMONT_PLUS,
    2330              :     M_CPU_TYPE (INTEL_GOLDMONT_PLUS), P_PROC_SSE4_2},
    2331              :   {"tremont", PROCESSOR_TREMONT, CPU_HASWELL, PTA_TREMONT,
    2332              :     M_CPU_TYPE (INTEL_TREMONT), P_PROC_SSE4_2},
    2333              :   {"gracemont", PROCESSOR_ALDERLAKE, CPU_HASWELL, PTA_ALDERLAKE,
    2334              :    M_CPU_SUBTYPE (INTEL_COREI7_ALDERLAKE), P_PROC_AVX2},
    2335              :   {"sierraforest", PROCESSOR_SIERRAFOREST, CPU_HASWELL, PTA_SIERRAFOREST,
    2336              :     M_CPU_TYPE (INTEL_SIERRAFOREST), P_PROC_AVX2},
    2337              :   {"grandridge", PROCESSOR_GRANDRIDGE, CPU_HASWELL, PTA_GRANDRIDGE,
    2338              :     M_CPU_TYPE (INTEL_GRANDRIDGE), P_PROC_AVX2},
    2339              :   {"clearwaterforest", PROCESSOR_CLEARWATERFOREST, CPU_HASWELL,
    2340              :     PTA_CLEARWATERFOREST, M_CPU_TYPE (INTEL_CLEARWATERFOREST), P_PROC_AVX2},
    2341              :   {"intel", PROCESSOR_INTEL, CPU_HASWELL, PTA_HASWELL,
    2342              :     M_VENDOR (VENDOR_INTEL), P_NONE},
    2343              :   {"geode", PROCESSOR_GEODE, CPU_GEODE,
    2344              :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_PREFETCH_SSE, 0, P_NONE},
    2345              :   {"k6", PROCESSOR_K6, CPU_K6, PTA_MMX, 0, P_NONE},
    2346              :   {"k6-2", PROCESSOR_K6, CPU_K6, PTA_MMX | PTA_3DNOW, 0, P_NONE},
    2347              :   {"k6-3", PROCESSOR_K6, CPU_K6, PTA_MMX | PTA_3DNOW, 0, P_NONE},
    2348              :   {"athlon", PROCESSOR_ATHLON, CPU_ATHLON,
    2349              :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_PREFETCH_SSE, 0, P_NONE},
    2350              :   {"athlon-tbird", PROCESSOR_ATHLON, CPU_ATHLON,
    2351              :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_PREFETCH_SSE, 0, P_NONE},
    2352              :   {"athlon-4", PROCESSOR_ATHLON, CPU_ATHLON,
    2353              :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_FXSR, 0, P_NONE},
    2354              :   {"athlon-xp", PROCESSOR_ATHLON, CPU_ATHLON,
    2355              :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_FXSR, 0, P_NONE},
    2356              :   {"athlon-mp", PROCESSOR_ATHLON, CPU_ATHLON,
    2357              :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_FXSR, 0, P_NONE},
    2358              :   {"x86-64", PROCESSOR_K8, CPU_K8, PTA_X86_64_BASELINE, 0, P_NONE},
    2359              :   {"x86-64-v2", PROCESSOR_K8, CPU_GENERIC, PTA_X86_64_V2 | PTA_NO_TUNE,
    2360              :    0, P_NONE},
    2361              :   {"x86-64-v3", PROCESSOR_K8, CPU_GENERIC, PTA_X86_64_V3 | PTA_NO_TUNE,
    2362              :    0, P_NONE},
    2363              :   {"x86-64-v4", PROCESSOR_K8, CPU_GENERIC, PTA_X86_64_V4 | PTA_NO_TUNE,
    2364              :    0, P_NONE},
    2365              :   {"eden-x2", PROCESSOR_K8, CPU_K8,
    2366              :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_FXSR,
    2367              :     0, P_NONE},
    2368              :   {"nano", PROCESSOR_K8, CPU_K8,
    2369              :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    2370              :       | PTA_SSSE3 | PTA_FXSR, 0, P_NONE},
    2371              :   {"nano-1000", PROCESSOR_K8, CPU_K8,
    2372              :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    2373              :       | PTA_SSSE3 | PTA_FXSR, 0, P_NONE},
    2374              :   {"nano-2000", PROCESSOR_K8, CPU_K8,
    2375              :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    2376              :       | PTA_SSSE3 | PTA_FXSR, 0, P_NONE},
    2377              :   {"nano-3000", PROCESSOR_K8, CPU_K8,
    2378              :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    2379              :       | PTA_SSSE3 | PTA_SSE4_1 | PTA_FXSR, 0, P_NONE},
    2380              :   {"nano-x2", PROCESSOR_K8, CPU_K8,
    2381              :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    2382              :       | PTA_SSSE3 | PTA_SSE4_1 | PTA_FXSR, 0, P_NONE},
    2383              :   {"eden-x4", PROCESSOR_K8, CPU_K8,
    2384              :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    2385              :       | PTA_SSSE3 | PTA_SSE4_1 | PTA_FXSR, 0, P_NONE},
    2386              :   {"nano-x4", PROCESSOR_K8, CPU_K8,
    2387              :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    2388              :       | PTA_SSSE3 | PTA_SSE4_1 | PTA_FXSR, 0, P_NONE},
    2389              :   {"lujiazui", PROCESSOR_LUJIAZUI, CPU_LUJIAZUI,
    2390              :         PTA_LUJIAZUI,
    2391              :         M_CPU_SUBTYPE (ZHAOXIN_FAM7H_LUJIAZUI), P_PROC_BMI},
    2392              :   {"yongfeng", PROCESSOR_YONGFENG, CPU_YONGFENG,
    2393              :         PTA_YONGFENG,
    2394              :         M_CPU_SUBTYPE (ZHAOXIN_FAM7H_YONGFENG), P_PROC_AVX2},
    2395              :   {"shijidadao", PROCESSOR_SHIJIDADAO, CPU_YONGFENG,
    2396              :         PTA_YONGFENG,
    2397              :         M_CPU_SUBTYPE (ZHAOXIN_FAM7H_SHIJIDADAO), P_PROC_AVX2},
    2398              :   {"k8", PROCESSOR_K8, CPU_K8,
    2399              :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    2400              :       | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR, 0, P_NONE},
    2401              :   {"k8-sse3", PROCESSOR_K8, CPU_K8,
    2402              :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    2403              :       | PTA_SSE2 | PTA_SSE3 | PTA_NO_SAHF | PTA_FXSR, 0, P_NONE},
    2404              :   {"opteron", PROCESSOR_K8, CPU_K8,
    2405              :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    2406              :       | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR, 0, P_NONE},
    2407              :   {"opteron-sse3", PROCESSOR_K8, CPU_K8,
    2408              :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    2409              :       | PTA_SSE2 | PTA_SSE3 | PTA_NO_SAHF | PTA_FXSR, 0, P_NONE},
    2410              :   {"athlon64", PROCESSOR_K8, CPU_K8,
    2411              :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    2412              :       | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR, 0, P_NONE},
    2413              :   {"athlon64-sse3", PROCESSOR_K8, CPU_K8,
    2414              :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    2415              :       | PTA_SSE2 | PTA_SSE3 | PTA_NO_SAHF | PTA_FXSR, 0, P_NONE},
    2416              :   {"athlon-fx", PROCESSOR_K8, CPU_K8,
    2417              :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    2418              :       | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR, 0, P_NONE},
    2419              :   {"amdfam10", PROCESSOR_AMDFAM10, CPU_AMDFAM10,
    2420              :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_SSE2
    2421              :       | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_PRFCHW | PTA_FXSR,
    2422              :     0, P_PROC_DYNAMIC},
    2423              :   {"barcelona", PROCESSOR_AMDFAM10, CPU_AMDFAM10,
    2424              :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_SSE2
    2425              :       | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_PRFCHW | PTA_FXSR,
    2426              :     M_CPU_SUBTYPE (AMDFAM10H_BARCELONA), P_PROC_DYNAMIC},
    2427              :   {"bdver1", PROCESSOR_BDVER1, CPU_BDVER1,
    2428              :     PTA_BDVER1,
    2429              :     M_CPU_SUBTYPE (AMDFAM15H_BDVER1), P_PROC_XOP},
    2430              :   {"bdver2", PROCESSOR_BDVER2, CPU_BDVER2,
    2431              :     PTA_BDVER2,
    2432              :     M_CPU_SUBTYPE (AMDFAM15H_BDVER2), P_PROC_FMA},
    2433              :   {"bdver3", PROCESSOR_BDVER3, CPU_BDVER3,
    2434              :     PTA_BDVER3,
    2435              :     M_CPU_SUBTYPE (AMDFAM15H_BDVER3), P_PROC_FMA},
    2436              :   {"bdver4", PROCESSOR_BDVER4, CPU_BDVER4,
    2437              :     PTA_BDVER4,
    2438              :     M_CPU_SUBTYPE (AMDFAM15H_BDVER4), P_PROC_AVX2},
    2439              :   {"znver1", PROCESSOR_ZNVER1, CPU_ZNVER1,
    2440              :     PTA_ZNVER1,
    2441              :     M_CPU_SUBTYPE (AMDFAM17H_ZNVER1), P_PROC_AVX2},
    2442              :   {"znver2", PROCESSOR_ZNVER2, CPU_ZNVER2,
    2443              :     PTA_ZNVER2,
    2444              :     M_CPU_SUBTYPE (AMDFAM17H_ZNVER2), P_PROC_AVX2},
    2445              :   {"znver3", PROCESSOR_ZNVER3, CPU_ZNVER3,
    2446              :     PTA_ZNVER3,
    2447              :     M_CPU_SUBTYPE (AMDFAM19H_ZNVER3), P_PROC_AVX2},
    2448              :   {"znver4", PROCESSOR_ZNVER4, CPU_ZNVER4,
    2449              :     PTA_ZNVER4,
    2450              :     M_CPU_SUBTYPE (AMDFAM19H_ZNVER4), P_PROC_AVX512F},
    2451              :   {"znver5", PROCESSOR_ZNVER5, CPU_ZNVER5,
    2452              :     PTA_ZNVER5,
    2453              :     M_CPU_SUBTYPE (AMDFAM1AH_ZNVER5), P_PROC_AVX512F},
    2454              :   {"znver6", PROCESSOR_ZNVER6, CPU_ZNVER5,
    2455              :     PTA_ZNVER6,
    2456              :     M_CPU_SUBTYPE (AMDFAM1AH_ZNVER6), P_PROC_AVX512F},
    2457              :   {"btver1", PROCESSOR_BTVER1, CPU_GENERIC,
    2458              :     PTA_BTVER1,
    2459              :     M_CPU_TYPE (AMD_BTVER1), P_PROC_SSE4_A},
    2460              :   {"btver2", PROCESSOR_BTVER2, CPU_BTVER2,
    2461              :     PTA_BTVER2,
    2462              :     M_CPU_TYPE (AMD_BTVER2), P_PROC_BMI},
    2463              :   {"c86-4g-m4", PROCESSOR_C86_4G_M4, CPU_C86_4G_M4,
    2464              :     PTA_C86_4G_M4,
    2465              :     M_CPU_SUBTYPE (HYGONFAM18H_C86_4G_M4), P_PROC_AVX2},
    2466              :   {"c86-4g-m6", PROCESSOR_C86_4G_M6, CPU_C86_4G_M6,
    2467              :     PTA_C86_4G_M6,
    2468              :     M_CPU_SUBTYPE (HYGONFAM18H_C86_4G_M6), P_PROC_AVX2},
    2469              :   {"c86-4g-m7", PROCESSOR_C86_4G_M7, CPU_C86_4G_M7,
    2470              :     PTA_C86_4G_M7,
    2471              :     M_CPU_SUBTYPE (HYGONFAM18H_C86_4G_M7), P_PROC_AVX512F},
    2472              :   {"c86-4g-m8", PROCESSOR_C86_4G_M8, CPU_C86_4G_M8,
    2473              :     PTA_C86_4G_M8,
    2474              :     M_CPU_SUBTYPE (HYGONFAM18H_C86_4G_M8), P_PROC_AVX512F},
    2475              : 
    2476              :   {"generic", PROCESSOR_GENERIC, CPU_GENERIC,
    2477              :     PTA_64BIT
    2478              :       | PTA_HLE /* flags are only used for -march switch.  */,
    2479              :     0, P_NONE},
    2480              : 
    2481              :   {"amd", PROCESSOR_GENERIC, CPU_GENERIC, 0,
    2482              :    M_VENDOR (VENDOR_AMD), P_NONE},
    2483              :   {"amdfam10h", PROCESSOR_GENERIC, CPU_GENERIC, 0,
    2484              :     M_CPU_TYPE (AMDFAM10H), P_NONE},
    2485              :   {"amdfam15h", PROCESSOR_GENERIC, CPU_GENERIC, 0,
    2486              :     M_CPU_TYPE (AMDFAM15H), P_NONE},
    2487              :   {"amdfam17h", PROCESSOR_GENERIC, CPU_GENERIC, 0,
    2488              :     M_CPU_TYPE (AMDFAM17H), P_NONE},
    2489              :   {"amdfam19h", PROCESSOR_GENERIC, CPU_GENERIC, 0,
    2490              :     M_CPU_TYPE (AMDFAM19H), P_NONE},
    2491              :   {"shanghai", PROCESSOR_GENERIC, CPU_GENERIC, 0,
    2492              :     M_CPU_SUBTYPE (AMDFAM10H_SHANGHAI), P_NONE},
    2493              :   {"istanbul", PROCESSOR_GENERIC, CPU_GENERIC, 0,
    2494              :     M_CPU_SUBTYPE (AMDFAM10H_ISTANBUL), P_NONE},
    2495              :   {"hygon", PROCESSOR_GENERIC, CPU_GENERIC, 0,
    2496              :     M_VENDOR (VENDOR_HYGON), P_NONE},
    2497              :   {"hygonfam18h", PROCESSOR_GENERIC, CPU_GENERIC, 0,
    2498              :     M_CPU_TYPE (HYGONFAM18H), P_NONE},
    2499              : };
    2500              : 
    2501              : /* NB: processor_alias_table stops at the "generic" entry.  */
    2502              : unsigned int const pta_size = ARRAY_SIZE (processor_alias_table) - 9;
    2503              : unsigned int const num_arch_names = ARRAY_SIZE (processor_alias_table);
    2504              : 
    2505              : /* Provide valid option values for -march and -mtune options.  */
    2506              : 
    2507              : vec<const char *>
    2508       157845 : ix86_get_valid_option_values (int option_code,
    2509              :                               const char *prefix ATTRIBUTE_UNUSED)
    2510              : {
    2511       157845 :   vec<const char *> v;
    2512       157845 :   v.create (0);
    2513       157845 :   opt_code opt = (opt_code) option_code;
    2514              : 
    2515       157845 :   switch (opt)
    2516              :     {
    2517              :     case OPT_march_:
    2518        72963 :       for (unsigned i = 0; i < pta_size; i++)
    2519              :         {
    2520        72360 :           const char *name = processor_alias_table[i].name;
    2521        72360 :           gcc_checking_assert (name != NULL);
    2522        72360 :           v.safe_push (name);
    2523              :         }
    2524              : #ifdef HAVE_LOCAL_CPU_DETECT
    2525              :       /* Add also "native" as possible value.  */
    2526          603 :       v.safe_push ("native");
    2527              : #endif
    2528              : 
    2529          603 :       break;
    2530              :     case OPT_mtune_:
    2531        38592 :       for (unsigned i = 0; i < PROCESSOR_max; i++)
    2532              :         {
    2533        37989 :           const char *name = processor_names[i];
    2534        37989 :           gcc_checking_assert (name != NULL);
    2535        37989 :           v.safe_push (name);
    2536              :         }
    2537              :       break;
    2538              :     default:
    2539              :       break;
    2540              :     }
    2541              : 
    2542       157845 :   return v;
    2543              : }
    2544              : 
    2545              : #undef  TARGET_GET_VALID_OPTION_VALUES
    2546              : #define TARGET_GET_VALID_OPTION_VALUES ix86_get_valid_option_values
    2547              : 
    2548              : struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
        

Generated by: LCOV version 2.4-beta

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,rust,m2 --enable-host-shared. GCC test suite is run with the built compiler.