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.8 % 824 806
Test Date: 2026-08-22 16:33:35 Functions: 100.0 % 6 6
Legend: Lines:     hit not hit

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