annotate gcc/common/config/i386/i386-common.c @ 145:1830386684a0

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