]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/s390/s390.opt
Update copyright years.
[thirdparty/gcc.git] / gcc / config / s390 / s390.opt
CommitLineData
f5db779b
RS
1; Options for the S/390 / zSeries port of the compiler.
2
a945c346 3; Copyright (C) 2005-2024 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
21HeaderInclude
22config/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
27TargetVariable
28unsigned char s390_arch_specified
cabbe12a 29
ec47b086
DV
30;; Flags derived from s390_arch
31TargetVariable
cabbe12a
JM
32int s390_arch_flags
33
ec47b086
DV
34;; whether -mtune was specified
35TargetVariable
36unsigned char s390_tune_specified
37
38;; Flags derived from s390_tune
39TargetVariable
40int s390_tune_flags
41
42;; Cpu cost table (this is actually a "const struct processor_cost *")
cabbe12a 43Variable
ec47b086 44long s390_cost_pointer
cabbe12a 45
f5db779b 46m31
eece52b5 47Target RejectNegative Negative(m64) InverseMask(64BIT)
a7b2e184 4831 bit ABI.
f5db779b
RS
49
50m64
eece52b5 51Target RejectNegative Negative(m31) Mask(64BIT)
a7b2e184 5264 bit ABI.
f5db779b
RS
53
54march=
ec47b086 55Target RejectNegative Joined Enum(processor_type) Var(s390_arch) Init(PROCESSOR_max) Save
a7b2e184 56Generate code for given CPU.
f5db779b 57
cabbe12a 58Enum
f137aa63 59Name(processor_type) Type(enum processor_type)
cabbe12a 60
cabbe12a 61EnumValue
f137aa63 62Enum(processor_type) String(z900) Value(PROCESSOR_2064_Z900)
cabbe12a 63
0dbb19f0
AK
64EnumValue
65Enum(processor_type) String(arch5) Value(PROCESSOR_2064_Z900)
66
cabbe12a 67EnumValue
f137aa63 68Enum(processor_type) String(z990) Value(PROCESSOR_2084_Z990)
cabbe12a 69
0dbb19f0
AK
70EnumValue
71Enum(processor_type) String(arch6) Value(PROCESSOR_2084_Z990)
72
cabbe12a 73EnumValue
f137aa63 74Enum(processor_type) String(z9-109) Value(PROCESSOR_2094_Z9_109)
cabbe12a
JM
75
76EnumValue
f137aa63 77Enum(processor_type) String(z9-ec) Value(PROCESSOR_2094_Z9_EC)
cabbe12a 78
0dbb19f0
AK
79EnumValue
80Enum(processor_type) String(arch7) Value(PROCESSOR_2094_Z9_EC)
81
cabbe12a 82EnumValue
f137aa63 83Enum(processor_type) String(z10) Value(PROCESSOR_2097_Z10)
cabbe12a 84
0dbb19f0
AK
85EnumValue
86Enum(processor_type) String(arch8) Value(PROCESSOR_2097_Z10)
87
cabbe12a 88EnumValue
f137aa63 89Enum(processor_type) String(z196) Value(PROCESSOR_2817_Z196)
cabbe12a 90
0dbb19f0
AK
91EnumValue
92Enum(processor_type) String(arch9) Value(PROCESSOR_2817_Z196)
93
22ac2c2f
AK
94EnumValue
95Enum(processor_type) String(zEC12) Value(PROCESSOR_2827_ZEC12)
96
0dbb19f0
AK
97EnumValue
98Enum(processor_type) String(arch10) Value(PROCESSOR_2827_ZEC12)
99
55ac540c
AK
100EnumValue
101Enum(processor_type) String(z13) Value(PROCESSOR_2964_Z13)
102
0dbb19f0
AK
103EnumValue
104Enum(processor_type) String(arch11) Value(PROCESSOR_2964_Z13)
105
6654e96f 106EnumValue
2731a5b3
AK
107Enum(processor_type) String(z14) Value(PROCESSOR_3906_Z14)
108
109EnumValue
110Enum(processor_type) String(arch12) Value(PROCESSOR_3906_Z14)
6654e96f 111
511ea153 112EnumValue
80f8cd77
AK
113Enum(processor_type) String(z15) Value(PROCESSOR_8561_Z15)
114
115EnumValue
116Enum(processor_type) String(arch13) Value(PROCESSOR_8561_Z15)
511ea153 117
796a35b2 118EnumValue
82a4c5c7
AK
119Enum(processor_type) String(arch14) Value(PROCESSOR_3931_Z16)
120
121EnumValue
122Enum(processor_type) String(z16) Value(PROCESSOR_3931_Z16)
796a35b2 123
cb0edc39
DV
124EnumValue
125Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly
126
f5db779b 127mbackchain
eece52b5 128Target Mask(BACKCHAIN) Save
a7b2e184 129Maintain backchain pointer.
f5db779b
RS
130
131mdebug
eece52b5 132Target Mask(DEBUG_ARG) Save
a7b2e184 133Additional debug prints.
f5db779b
RS
134
135mesa
eece52b5 136Target RejectNegative Negative(mzarch) InverseMask(ZARCH)
a7b2e184 137ESA/390 architecture.
f5db779b 138
3443392a 139mhard-dfp
eece52b5 140Target Mask(HARD_DFP) Save
a7b2e184 141Enable decimal floating point hardware support.
3443392a 142
f5db779b 143mhard-float
eece52b5 144Target RejectNegative Negative(msoft-float) InverseMask(SOFT_FLOAT, HARD_FLOAT) Save
a7b2e184 145Enable hardware floating point.
f5db779b 146
d0de9e13 147mhotpatch=
eece52b5 148Target RejectNegative Joined Var(s390_deferred_options) Defer
94091f43
DV
149Takes two non-negative integer numbers separated by a comma.
150Prepend the function label with the number of two-byte Nop
151instructions indicated by the first. Append Nop instructions
152covering the number of halfwords indicated by the second after the
153label. Nop instructions of the largest possible size are used
154(six, four or two bytes), beginning with the largest possible
155size. Using 0 for both values disables hotpatching.
d0de9e13 156
f61a2c7d 157mlong-double-128
eece52b5 158Target RejectNegative Negative(mlong-double-64) Mask(LONG_DOUBLE_128)
a7b2e184 159Use 128-bit long double.
f61a2c7d
AK
160
161mlong-double-64
eece52b5 162Target RejectNegative Negative(mlong-double-128) InverseMask(LONG_DOUBLE_128)
a7b2e184 163Use 64-bit long double.
f61a2c7d 164
5a3fe9b6 165mhtm
eece52b5 166Target Mask(OPT_HTM) Save
a7b2e184 167Use hardware transactional execution instructions.
5a3fe9b6 168
55ac540c 169mvx
eece52b5 170Target Mask(OPT_VX) Save
a7b2e184 171Use hardware vector facility instructions and enable the vector ABI.
55ac540c 172
f5db779b 173mpacked-stack
eece52b5 174Target Mask(PACKED_STACK) Save
a7b2e184 175Use packed stack layout.
f5db779b
RS
176
177msmall-exec
eece52b5 178Target Mask(SMALL_EXEC) Save
a7b2e184 179Use bras for executable < 64k.
f5db779b
RS
180
181msoft-float
eece52b5 182Target RejectNegative Negative(mhard-float) Mask(SOFT_FLOAT) Save
a7b2e184 183Disable hardware floating point.
f5db779b
RS
184
185mstack-guard=
ec47b086 186Target RejectNegative Negative(mno-stack-guard) Joined UInteger Var(s390_stack_guard) Save
a7b2e184 187Set the max. number of bytes which has to be left to stack size before a trap instruction is triggered.
f5db779b 188
ec47b086
DV
189mno-stack-guard
190Target RejectNegative Alias(mstack-guard=,0) Negative(mstack-guard=)
191Switches off the -mstack-guard= option.
192
f5db779b 193mstack-size=
ec47b086 194Target RejectNegative Joined UInteger Var(s390_stack_size) Save
a7b2e184 195Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit.
f5db779b 196
ec47b086
DV
197mno-stack-size
198Target RejectNegative Alias(mstack-size=,0) Negative(mstack-size=)
199Switches off the -mstack-size= option.
200
f5db779b 201mtune=
ec47b086 202Target RejectNegative Joined Enum(processor_type) Var(s390_tune) Init(PROCESSOR_max) Save
a7b2e184 203Schedule code for given CPU.
f5db779b 204
8daf098e 205mmvcle
eece52b5 206Target Mask(MVCLE) Save
aa189aee 207Use the mvcle instruction for block moves.
f5db779b 208
3af82a61 209mzvector
eece52b5 210Target Mask(ZVECTOR) Save
17f262c5 211Enable the z vector language extension providing the context-sensitive
6a86b9a1 212vector macro and enable the Altivec-style builtins in vecintrin.h.
3af82a61 213
f5db779b 214mwarn-dynamicstack
ec47b086 215Target Var(s390_warn_dynamicstack_p) Save
a7b2e184 216Warn if a function uses alloca or creates an array with dynamic size.
f5db779b
RS
217
218mwarn-framesize=
ec47b086 219Target RejectNegative Joined UInteger Var(s390_warn_framesize) Save
a7b2e184 220Warn if a single function's framesize exceeds the given framesize.
f5db779b
RS
221
222mzarch
eece52b5 223Target RejectNegative Negative(mesa) Mask(ZARCH)
a7b2e184 224z/Architecture.
3d427cc1
AK
225
226mbranch-cost=
eece52b5 227Target Joined RejectNegative UInteger Var(s390_branch_cost) Init(1) Save
3d427cc1
AK
228Set the branch costs for conditional branch instructions. Reasonable
229values are small, non-negative integers. The default branch cost is
2301.
3597e113
VM
231
232mlra
eece52b5 233Target Var(s390_lra_flag) Init(1) Save
a7b2e184 234Use LRA instead of reload.
935b5226
AK
235
236mpic-data-is-text-relative
eece52b5 237Target Var(s390_pic_data_is_text_relative) Init(TARGET_DEFAULT_PIC_DATA_IS_TEXT_RELATIVE)
935b5226 238Assume data segments are relative to text segment.
84b4c7b5
AK
239
240
241mindirect-branch=
eece52b5 242Target RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch) Init(indirect_branch_keep)
84b4c7b5
AK
243Wrap all indirect branches into execute in order to disable branch
244prediction.
245
246mindirect-branch-jump=
eece52b5 247Target RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_jump) Init(indirect_branch_keep)
84b4c7b5
AK
248Wrap indirect table jumps and computed gotos into execute in order to
249disable branch prediction. Using thunk or thunk-extern with this
250option requires the thunks to be considered signal handlers to order to
251generate correct CFI. For environments where unwinding (e.g. for
252exceptions) is required please use thunk-inline instead.
253
254mindirect-branch-call=
eece52b5 255Target RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_call) Init(indirect_branch_keep)
84b4c7b5
AK
256Wrap all indirect calls into execute in order to disable branch prediction.
257
258mfunction-return=
eece52b5 259Target RejectNegative Joined Enum(indirect_branch) Var(s390_function_return) Init(indirect_branch_keep)
84b4c7b5
AK
260Wrap all indirect return branches into execute in order to disable branch
261prediction.
262
263mfunction-return-mem=
eece52b5 264Target RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_mem) Init(indirect_branch_keep)
84b4c7b5
AK
265Wrap indirect return branches into execute in order to disable branch
266prediction. This affects only branches where the return address is
267going to be restored from memory.
268
269mfunction-return-reg=
eece52b5 270Target RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_reg) Init(indirect_branch_keep)
84b4c7b5
AK
271Wrap indirect return branches into execute in order to disable branch
272prediction. This affects only branches where the return address
273doesn't need to be restored from memory.
274
275Enum
276Name(indirect_branch) Type(enum indirect_branch)
277Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options):
278
279EnumValue
280Enum(indirect_branch) String(keep) Value(indirect_branch_keep)
281
282EnumValue
283Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk)
284
285EnumValue
286Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline)
287
288EnumValue
289Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern)
290
291mindirect-branch-table
eece52b5 292Target Var(s390_indirect_branch_table) Init(TARGET_DEFAULT_INDIRECT_BRANCH_TABLE)
84b4c7b5
AK
293Generate sections .s390_indirect_jump, .s390_indirect_call,
294.s390_return_reg, and .s390_return_mem to contain the indirect branch
295locations which have been patched as part of using one of the
296-mindirect-branch* or -mfunction-return* options. The sections
297consist of an array of 32 bit elements. Each entry holds the offset
298from the entry to the patched location.
6902799c
IL
299
300mfentry
eece52b5 301Target Var(flag_fentry)
6902799c
IL
302Emit profiling counter call at function entry before prologue. The compiled
303code will require a 64-bit CPU and glibc 2.29 or newer to run.
605090dc
IL
304
305mrecord-mcount
eece52b5 306Target Var(flag_record_mcount)
605090dc 307Generate __mcount_loc section with all _mcount and __fentry__ calls.
79c2f6d7
IL
308
309mnop-mcount
eece52b5 310Target Var(flag_nop_mcount)
79c2f6d7
IL
311Generate mcount/__fentry__ calls as nops. To activate they need to be
312patched in.
e627cda5
IL
313
314mvx-long-double-fma
eece52b5 315Target Undocumented Var(flag_vx_long_double_fma)
e627cda5
IL
316Emit fused multiply-add instructions for long doubles in vector registers
317(wfmaxb, wfmsxb, wfnmaxb, wfnmsxb). Reassociation pass does not handle
318fused multiply-adds, therefore code generated by the middle-end is prone to
319having long fused multiply-add chains. This is not pipeline-friendly,
320and the default behavior is to emit separate multiplication and addition
321instructions for long doubles in vector registers, because measurements show
322that this improves performance. This option allows overriding it for testing
323purposes.
af895511
RD
324
325munroll-only-small-loops
326Target Undocumented Var(unroll_only_small_loops) Init(0) Save
327; Use conservative small loop unrolling.
8091199c
AK
328
329mpreserve-args
330Target Var(s390_preserve_args_p) Init(0)
331Store all argument registers on the stack.
6cb2f2c7
AK
332
333munaligned-symbols
334Target Var(s390_unaligned_symbols_p) Init(0)
335Assume external symbols to be potentially unaligned. By default all
336symbols without explicit alignment are assumed to reside on a 2 byte
337boundary as mandated by the IBM Z ABI.
338