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