]>
Commit | Line | Data |
---|---|---|
f5db779b RS |
1 | ; Options for the S/390 / zSeries port of the compiler. |
2 | ||
8d9254fc | 3 | ; Copyright (C) 2005-2020 Free Software Foundation, Inc. |
f5db779b RS |
4 | ; |
5 | ; This file is part of GCC. | |
6 | ; | |
7 | ; GCC is free software; you can redistribute it and/or modify it under | |
8 | ; the terms of the GNU General Public License as published by the Free | |
2f83c7d6 | 9 | ; Software Foundation; either version 3, or (at your option) any later |
f5db779b RS |
10 | ; version. |
11 | ; | |
12 | ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY | |
13 | ; WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 | ; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 | ; for more details. | |
16 | ; | |
17 | ; You should have received a copy of the GNU General Public License | |
2f83c7d6 NC |
18 | ; along with GCC; see the file COPYING3. If not see |
19 | ; <http://www.gnu.org/licenses/>. | |
f5db779b | 20 | |
cabbe12a JM |
21 | HeaderInclude |
22 | config/s390/s390-opts.h | |
23 | ||
ec47b086 | 24 | ;; Definitions to add to the cl_target_option and gcc_options structures |
cabbe12a | 25 | |
ec47b086 DV |
26 | ;; whether -march was specified |
27 | TargetVariable | |
28 | unsigned char s390_arch_specified | |
cabbe12a | 29 | |
ec47b086 DV |
30 | ;; Flags derived from s390_arch |
31 | TargetVariable | |
cabbe12a JM |
32 | int s390_arch_flags |
33 | ||
ec47b086 DV |
34 | ;; whether -mtune was specified |
35 | TargetVariable | |
36 | unsigned char s390_tune_specified | |
37 | ||
38 | ;; Flags derived from s390_tune | |
39 | TargetVariable | |
40 | int s390_tune_flags | |
41 | ||
42 | ;; Cpu cost table (this is actually a "const struct processor_cost *") | |
cabbe12a | 43 | Variable |
ec47b086 | 44 | long s390_cost_pointer |
cabbe12a | 45 | |
f5db779b | 46 | m31 |
cba04b96 | 47 | Target Report RejectNegative Negative(m64) InverseMask(64BIT) |
a7b2e184 | 48 | 31 bit ABI. |
f5db779b RS |
49 | |
50 | m64 | |
cba04b96 | 51 | Target Report RejectNegative Negative(m31) Mask(64BIT) |
a7b2e184 | 52 | 64 bit ABI. |
f5db779b RS |
53 | |
54 | march= | |
ec47b086 | 55 | Target RejectNegative Joined Enum(processor_type) Var(s390_arch) Init(PROCESSOR_max) Save |
a7b2e184 | 56 | Generate code for given CPU. |
f5db779b | 57 | |
cabbe12a | 58 | Enum |
f137aa63 | 59 | Name(processor_type) Type(enum processor_type) |
cabbe12a | 60 | |
cabbe12a | 61 | EnumValue |
f137aa63 | 62 | Enum(processor_type) String(z900) Value(PROCESSOR_2064_Z900) |
cabbe12a | 63 | |
0dbb19f0 AK |
64 | EnumValue |
65 | Enum(processor_type) String(arch5) Value(PROCESSOR_2064_Z900) | |
66 | ||
cabbe12a | 67 | EnumValue |
f137aa63 | 68 | Enum(processor_type) String(z990) Value(PROCESSOR_2084_Z990) |
cabbe12a | 69 | |
0dbb19f0 AK |
70 | EnumValue |
71 | Enum(processor_type) String(arch6) Value(PROCESSOR_2084_Z990) | |
72 | ||
cabbe12a | 73 | EnumValue |
f137aa63 | 74 | Enum(processor_type) String(z9-109) Value(PROCESSOR_2094_Z9_109) |
cabbe12a JM |
75 | |
76 | EnumValue | |
f137aa63 | 77 | Enum(processor_type) String(z9-ec) Value(PROCESSOR_2094_Z9_EC) |
cabbe12a | 78 | |
0dbb19f0 AK |
79 | EnumValue |
80 | Enum(processor_type) String(arch7) Value(PROCESSOR_2094_Z9_EC) | |
81 | ||
cabbe12a | 82 | EnumValue |
f137aa63 | 83 | Enum(processor_type) String(z10) Value(PROCESSOR_2097_Z10) |
cabbe12a | 84 | |
0dbb19f0 AK |
85 | EnumValue |
86 | Enum(processor_type) String(arch8) Value(PROCESSOR_2097_Z10) | |
87 | ||
cabbe12a | 88 | EnumValue |
f137aa63 | 89 | Enum(processor_type) String(z196) Value(PROCESSOR_2817_Z196) |
cabbe12a | 90 | |
0dbb19f0 AK |
91 | EnumValue |
92 | Enum(processor_type) String(arch9) Value(PROCESSOR_2817_Z196) | |
93 | ||
22ac2c2f AK |
94 | EnumValue |
95 | Enum(processor_type) String(zEC12) Value(PROCESSOR_2827_ZEC12) | |
96 | ||
0dbb19f0 AK |
97 | EnumValue |
98 | Enum(processor_type) String(arch10) Value(PROCESSOR_2827_ZEC12) | |
99 | ||
55ac540c AK |
100 | EnumValue |
101 | Enum(processor_type) String(z13) Value(PROCESSOR_2964_Z13) | |
102 | ||
0dbb19f0 AK |
103 | EnumValue |
104 | Enum(processor_type) String(arch11) Value(PROCESSOR_2964_Z13) | |
105 | ||
6654e96f | 106 | EnumValue |
2731a5b3 AK |
107 | Enum(processor_type) String(z14) Value(PROCESSOR_3906_Z14) |
108 | ||
109 | EnumValue | |
110 | Enum(processor_type) String(arch12) Value(PROCESSOR_3906_Z14) | |
6654e96f | 111 | |
511ea153 | 112 | EnumValue |
80f8cd77 AK |
113 | Enum(processor_type) String(z15) Value(PROCESSOR_8561_Z15) |
114 | ||
115 | EnumValue | |
116 | Enum(processor_type) String(arch13) Value(PROCESSOR_8561_Z15) | |
511ea153 | 117 | |
cb0edc39 DV |
118 | EnumValue |
119 | Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly | |
120 | ||
f5db779b | 121 | mbackchain |
ec47b086 | 122 | Target Report Mask(BACKCHAIN) Save |
a7b2e184 | 123 | Maintain backchain pointer. |
f5db779b RS |
124 | |
125 | mdebug | |
ec47b086 | 126 | Target Report Mask(DEBUG_ARG) Save |
a7b2e184 | 127 | Additional debug prints. |
f5db779b RS |
128 | |
129 | mesa | |
cba04b96 | 130 | Target Report RejectNegative Negative(mzarch) InverseMask(ZARCH) |
a7b2e184 | 131 | ESA/390 architecture. |
f5db779b | 132 | |
3443392a | 133 | mhard-dfp |
ec47b086 | 134 | Target Report Mask(HARD_DFP) Save |
a7b2e184 | 135 | Enable decimal floating point hardware support. |
3443392a | 136 | |
f5db779b | 137 | mhard-float |
ec47b086 | 138 | Target Report RejectNegative Negative(msoft-float) InverseMask(SOFT_FLOAT, HARD_FLOAT) Save |
a7b2e184 | 139 | Enable hardware floating point. |
f5db779b | 140 | |
d0de9e13 DV |
141 | mhotpatch= |
142 | Target RejectNegative Report Joined Var(s390_deferred_options) Defer | |
94091f43 DV |
143 | Takes two non-negative integer numbers separated by a comma. |
144 | Prepend the function label with the number of two-byte Nop | |
145 | instructions indicated by the first. Append Nop instructions | |
146 | covering the number of halfwords indicated by the second after the | |
147 | label. Nop instructions of the largest possible size are used | |
148 | (six, four or two bytes), beginning with the largest possible | |
149 | size. Using 0 for both values disables hotpatching. | |
d0de9e13 | 150 | |
f61a2c7d | 151 | mlong-double-128 |
cba04b96 | 152 | Target Report RejectNegative Negative(mlong-double-64) Mask(LONG_DOUBLE_128) |
a7b2e184 | 153 | Use 128-bit long double. |
f61a2c7d AK |
154 | |
155 | mlong-double-64 | |
cba04b96 | 156 | Target Report RejectNegative Negative(mlong-double-128) InverseMask(LONG_DOUBLE_128) |
a7b2e184 | 157 | Use 64-bit long double. |
f61a2c7d | 158 | |
5a3fe9b6 | 159 | mhtm |
ec47b086 | 160 | Target Report Mask(OPT_HTM) Save |
a7b2e184 | 161 | Use hardware transactional execution instructions. |
5a3fe9b6 | 162 | |
55ac540c | 163 | mvx |
ec47b086 | 164 | Target Report Mask(OPT_VX) Save |
a7b2e184 | 165 | Use hardware vector facility instructions and enable the vector ABI. |
55ac540c | 166 | |
f5db779b | 167 | mpacked-stack |
ec47b086 | 168 | Target Report Mask(PACKED_STACK) Save |
a7b2e184 | 169 | Use packed stack layout. |
f5db779b RS |
170 | |
171 | msmall-exec | |
ec47b086 | 172 | Target Report Mask(SMALL_EXEC) Save |
a7b2e184 | 173 | Use bras for executable < 64k. |
f5db779b RS |
174 | |
175 | msoft-float | |
ec47b086 | 176 | Target Report RejectNegative Negative(mhard-float) Mask(SOFT_FLOAT) Save |
a7b2e184 | 177 | Disable hardware floating point. |
f5db779b RS |
178 | |
179 | mstack-guard= | |
ec47b086 | 180 | Target RejectNegative Negative(mno-stack-guard) Joined UInteger Var(s390_stack_guard) Save |
a7b2e184 | 181 | Set the max. number of bytes which has to be left to stack size before a trap instruction is triggered. |
f5db779b | 182 | |
ec47b086 DV |
183 | mno-stack-guard |
184 | Target RejectNegative Alias(mstack-guard=,0) Negative(mstack-guard=) | |
185 | Switches off the -mstack-guard= option. | |
186 | ||
f5db779b | 187 | mstack-size= |
ec47b086 | 188 | Target RejectNegative Joined UInteger Var(s390_stack_size) Save |
a7b2e184 | 189 | Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit. |
f5db779b | 190 | |
ec47b086 DV |
191 | mno-stack-size |
192 | Target RejectNegative Alias(mstack-size=,0) Negative(mstack-size=) | |
193 | Switches off the -mstack-size= option. | |
194 | ||
f5db779b | 195 | mtune= |
ec47b086 | 196 | Target RejectNegative Joined Enum(processor_type) Var(s390_tune) Init(PROCESSOR_max) Save |
a7b2e184 | 197 | Schedule code for given CPU. |
f5db779b | 198 | |
8daf098e | 199 | mmvcle |
ec47b086 | 200 | Target Report Mask(MVCLE) Save |
aa189aee | 201 | Use the mvcle instruction for block moves. |
f5db779b | 202 | |
3af82a61 | 203 | mzvector |
ec47b086 | 204 | Target Report Mask(ZVECTOR) Save |
17f262c5 | 205 | Enable the z vector language extension providing the context-sensitive |
6a86b9a1 | 206 | vector macro and enable the Altivec-style builtins in vecintrin.h. |
3af82a61 | 207 | |
f5db779b | 208 | mwarn-dynamicstack |
ec47b086 | 209 | Target Var(s390_warn_dynamicstack_p) Save |
a7b2e184 | 210 | Warn if a function uses alloca or creates an array with dynamic size. |
f5db779b RS |
211 | |
212 | mwarn-framesize= | |
ec47b086 | 213 | Target RejectNegative Joined UInteger Var(s390_warn_framesize) Save |
a7b2e184 | 214 | Warn if a single function's framesize exceeds the given framesize. |
f5db779b RS |
215 | |
216 | mzarch | |
cba04b96 | 217 | Target Report RejectNegative Negative(mesa) Mask(ZARCH) |
a7b2e184 | 218 | z/Architecture. |
3d427cc1 AK |
219 | |
220 | mbranch-cost= | |
ec47b086 | 221 | Target Report Joined RejectNegative UInteger Var(s390_branch_cost) Init(1) Save |
3d427cc1 AK |
222 | Set the branch costs for conditional branch instructions. Reasonable |
223 | values are small, non-negative integers. The default branch cost is | |
224 | 1. | |
3597e113 VM |
225 | |
226 | mlra | |
227 | Target Report Var(s390_lra_flag) Init(1) Save | |
a7b2e184 | 228 | Use LRA instead of reload. |
935b5226 AK |
229 | |
230 | mpic-data-is-text-relative | |
231 | Target Report Var(s390_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE) | |
232 | Assume data segments are relative to text segment. | |
84b4c7b5 AK |
233 | |
234 | ||
235 | mindirect-branch= | |
236 | Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch) Init(indirect_branch_keep) | |
237 | Wrap all indirect branches into execute in order to disable branch | |
238 | prediction. | |
239 | ||
240 | mindirect-branch-jump= | |
241 | Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_jump) Init(indirect_branch_keep) | |
242 | Wrap indirect table jumps and computed gotos into execute in order to | |
243 | disable branch prediction. Using thunk or thunk-extern with this | |
244 | option requires the thunks to be considered signal handlers to order to | |
245 | generate correct CFI. For environments where unwinding (e.g. for | |
246 | exceptions) is required please use thunk-inline instead. | |
247 | ||
248 | mindirect-branch-call= | |
249 | Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_call) Init(indirect_branch_keep) | |
250 | Wrap all indirect calls into execute in order to disable branch prediction. | |
251 | ||
252 | mfunction-return= | |
253 | Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return) Init(indirect_branch_keep) | |
254 | Wrap all indirect return branches into execute in order to disable branch | |
255 | prediction. | |
256 | ||
257 | mfunction-return-mem= | |
258 | Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_mem) Init(indirect_branch_keep) | |
259 | Wrap indirect return branches into execute in order to disable branch | |
260 | prediction. This affects only branches where the return address is | |
261 | going to be restored from memory. | |
262 | ||
263 | mfunction-return-reg= | |
264 | Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_reg) Init(indirect_branch_keep) | |
265 | Wrap indirect return branches into execute in order to disable branch | |
266 | prediction. This affects only branches where the return address | |
267 | doesn't need to be restored from memory. | |
268 | ||
269 | Enum | |
270 | Name(indirect_branch) Type(enum indirect_branch) | |
271 | Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options): | |
272 | ||
273 | EnumValue | |
274 | Enum(indirect_branch) String(keep) Value(indirect_branch_keep) | |
275 | ||
276 | EnumValue | |
277 | Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk) | |
278 | ||
279 | EnumValue | |
280 | Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline) | |
281 | ||
282 | EnumValue | |
283 | Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern) | |
284 | ||
285 | mindirect-branch-table | |
286 | Target Report Var(s390_indirect_branch_table) Init(TARGET_DEFAULT_INDIRECT_BRANCH_TABLE) | |
287 | Generate sections .s390_indirect_jump, .s390_indirect_call, | |
288 | .s390_return_reg, and .s390_return_mem to contain the indirect branch | |
289 | locations which have been patched as part of using one of the | |
290 | -mindirect-branch* or -mfunction-return* options. The sections | |
291 | consist of an array of 32 bit elements. Each entry holds the offset | |
292 | from the entry to the patched location. | |
6902799c IL |
293 | |
294 | mfentry | |
295 | Target Report Var(flag_fentry) | |
296 | Emit profiling counter call at function entry before prologue. The compiled | |
297 | code will require a 64-bit CPU and glibc 2.29 or newer to run. | |
605090dc IL |
298 | |
299 | mrecord-mcount | |
300 | Target Report Var(flag_record_mcount) | |
301 | Generate __mcount_loc section with all _mcount and __fentry__ calls. | |
79c2f6d7 IL |
302 | |
303 | mnop-mcount | |
304 | Target Report Var(flag_nop_mcount) | |
305 | Generate mcount/__fentry__ calls as nops. To activate they need to be | |
306 | patched in. |