s390.opt revision 1.9
1; Options for the S/390 / zSeries port of the compiler. 2 3; Copyright (C) 2005-2017 Free Software Foundation, Inc. 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 9; Software Foundation; either version 3, or (at your option) any later 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 18; along with GCC; see the file COPYING3. If not see 19; <http://www.gnu.org/licenses/>. 20 21HeaderInclude 22config/s390/s390-opts.h 23 24;; Definitions to add to the cl_target_option and gcc_options structures 25 26;; whether -march was specified 27TargetVariable 28unsigned char s390_arch_specified 29 30;; Flags derived from s390_arch 31TargetVariable 32int s390_arch_flags 33 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 *") 43Variable 44long s390_cost_pointer 45 46m31 47Target Report RejectNegative Negative(m64) InverseMask(64BIT) 4831 bit ABI. 49 50m64 51Target Report RejectNegative Negative(m31) Mask(64BIT) 5264 bit ABI. 53 54march= 55Target RejectNegative Joined Enum(processor_type) Var(s390_arch) Init(PROCESSOR_max) Save 56Generate code for given CPU. 57 58Enum 59Name(processor_type) Type(enum processor_type) 60 61EnumValue 62Enum(processor_type) String(g5) Value(PROCESSOR_9672_G5) 63 64EnumValue 65Enum(processor_type) String(arch3) Value(PROCESSOR_9672_G5) 66 67EnumValue 68Enum(processor_type) String(g6) Value(PROCESSOR_9672_G6) 69 70EnumValue 71Enum(processor_type) String(z900) Value(PROCESSOR_2064_Z900) 72 73EnumValue 74Enum(processor_type) String(arch5) Value(PROCESSOR_2064_Z900) 75 76EnumValue 77Enum(processor_type) String(z990) Value(PROCESSOR_2084_Z990) 78 79EnumValue 80Enum(processor_type) String(arch6) Value(PROCESSOR_2084_Z990) 81 82EnumValue 83Enum(processor_type) String(z9-109) Value(PROCESSOR_2094_Z9_109) 84 85EnumValue 86Enum(processor_type) String(z9-ec) Value(PROCESSOR_2094_Z9_EC) 87 88EnumValue 89Enum(processor_type) String(arch7) Value(PROCESSOR_2094_Z9_EC) 90 91EnumValue 92Enum(processor_type) String(z10) Value(PROCESSOR_2097_Z10) 93 94EnumValue 95Enum(processor_type) String(arch8) Value(PROCESSOR_2097_Z10) 96 97EnumValue 98Enum(processor_type) String(z196) Value(PROCESSOR_2817_Z196) 99 100EnumValue 101Enum(processor_type) String(arch9) Value(PROCESSOR_2817_Z196) 102 103EnumValue 104Enum(processor_type) String(zEC12) Value(PROCESSOR_2827_ZEC12) 105 106EnumValue 107Enum(processor_type) String(arch10) Value(PROCESSOR_2827_ZEC12) 108 109EnumValue 110Enum(processor_type) String(z13) Value(PROCESSOR_2964_Z13) 111 112EnumValue 113Enum(processor_type) String(arch11) Value(PROCESSOR_2964_Z13) 114 115EnumValue 116Enum(processor_type) String(z14) Value(PROCESSOR_3906_Z14) 117 118EnumValue 119Enum(processor_type) String(arch12) Value(PROCESSOR_3906_Z14) 120 121EnumValue 122Enum(processor_type) String(native) Value(PROCESSOR_NATIVE) DriverOnly 123 124mbackchain 125Target Report Mask(BACKCHAIN) Save 126Maintain backchain pointer. 127 128mdebug 129Target Report Mask(DEBUG_ARG) Save 130Additional debug prints. 131 132mesa 133Target Report RejectNegative Negative(mzarch) InverseMask(ZARCH) 134ESA/390 architecture. 135 136mhard-dfp 137Target Report Mask(HARD_DFP) Save 138Enable decimal floating point hardware support. 139 140mhard-float 141Target Report RejectNegative Negative(msoft-float) InverseMask(SOFT_FLOAT, HARD_FLOAT) Save 142Enable hardware floating point. 143 144mhotpatch= 145Target RejectNegative Report Joined Var(s390_deferred_options) Defer 146Takes two non-negative integer numbers separated by a comma. 147Prepend the function label with the number of two-byte Nop 148instructions indicated by the first. Append Nop instructions 149covering the number of halfwords indicated by the second after the 150label. Nop instructions of the largest possible size are used 151(six, four or two bytes), beginning with the largest possible 152size. Using 0 for both values disables hotpatching. 153 154mlong-double-128 155Target Report RejectNegative Negative(mlong-double-64) Mask(LONG_DOUBLE_128) 156Use 128-bit long double. 157 158mlong-double-64 159Target Report RejectNegative Negative(mlong-double-128) InverseMask(LONG_DOUBLE_128) 160Use 64-bit long double. 161 162mhtm 163Target Report Mask(OPT_HTM) Save 164Use hardware transactional execution instructions. 165 166mvx 167Target Report Mask(OPT_VX) Save 168Use hardware vector facility instructions and enable the vector ABI. 169 170mpacked-stack 171Target Report Mask(PACKED_STACK) Save 172Use packed stack layout. 173 174msmall-exec 175Target Report Mask(SMALL_EXEC) Save 176Use bras for executable < 64k. 177 178msoft-float 179Target Report RejectNegative Negative(mhard-float) Mask(SOFT_FLOAT) Save 180Disable hardware floating point. 181 182mstack-guard= 183Target RejectNegative Negative(mno-stack-guard) Joined UInteger Var(s390_stack_guard) Save 184Set the max. number of bytes which has to be left to stack size before a trap instruction is triggered. 185 186mno-stack-guard 187Target RejectNegative Alias(mstack-guard=,0) Negative(mstack-guard=) 188Switches off the -mstack-guard= option. 189 190mstack-size= 191Target RejectNegative Joined UInteger Var(s390_stack_size) Save 192Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit. 193 194mno-stack-size 195Target RejectNegative Alias(mstack-size=,0) Negative(mstack-size=) 196Switches off the -mstack-size= option. 197 198mtune= 199Target RejectNegative Joined Enum(processor_type) Var(s390_tune) Init(PROCESSOR_max) Save 200Schedule code for given CPU. 201 202mmvcle 203Target Report Mask(MVCLE) Save 204Use the mvcle instruction for block moves. 205 206mzvector 207Target Report Mask(ZVECTOR) Save 208Enable the z vector language extension providing the context-sensitive 209vector macro and enable the Altivec-style builtins in vecintrin.h. 210 211mwarn-dynamicstack 212Target Var(s390_warn_dynamicstack_p) Save 213Warn if a function uses alloca or creates an array with dynamic size. 214 215mwarn-framesize= 216Target RejectNegative Joined UInteger Var(s390_warn_framesize) Save 217Warn if a single function's framesize exceeds the given framesize. 218 219mzarch 220Target Report RejectNegative Negative(mesa) Mask(ZARCH) 221z/Architecture. 222 223mbranch-cost= 224Target Report Joined RejectNegative UInteger Var(s390_branch_cost) Init(1) Save 225Set the branch costs for conditional branch instructions. Reasonable 226values are small, non-negative integers. The default branch cost is 2271. 228 229mlra 230Target Report Var(s390_lra_flag) Init(1) Save 231Use LRA instead of reload. 232 233mindirect-branch= 234Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch) Init(indirect_branch_keep) 235Wrap all indirect branches into execute in order to disable branch 236prediction. 237 238mindirect-branch-jump= 239Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_jump) Init(indirect_branch_keep) 240Wrap indirect table jumps and computed gotos into execute in order to 241disable branch prediction. Using thunk or thunk-extern with this 242option requires the thunks to be considered signal handlers to order to 243generate correct CFI. For environments where unwinding (e.g. for 244exceptions) is required please use thunk-inline instead. 245 246mindirect-branch-call= 247Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_indirect_branch_call) Init(indirect_branch_keep) 248Wrap all indirect calls into execute in order to disable branch prediction. 249 250mfunction-return= 251Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return) Init(indirect_branch_keep) 252Wrap all indirect return branches into execute in order to disable branch 253prediction. 254 255mfunction-return-mem= 256Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_mem) Init(indirect_branch_keep) 257Wrap indirect return branches into execute in order to disable branch 258prediction. This affects only branches where the return address is 259going to be restored from memory. 260 261mfunction-return-reg= 262Target Report RejectNegative Joined Enum(indirect_branch) Var(s390_function_return_reg) Init(indirect_branch_keep) 263Wrap indirect return branches into execute in order to disable branch 264prediction. This affects only branches where the return address 265doesn't need to be restored from memory. 266 267Enum 268Name(indirect_branch) Type(enum indirect_branch) 269Known indirect branch choices (for use with the -mindirect-branch=/-mfunction-return= options): 270 271EnumValue 272Enum(indirect_branch) String(keep) Value(indirect_branch_keep) 273 274EnumValue 275Enum(indirect_branch) String(thunk) Value(indirect_branch_thunk) 276 277EnumValue 278Enum(indirect_branch) String(thunk-inline) Value(indirect_branch_thunk_inline) 279 280EnumValue 281Enum(indirect_branch) String(thunk-extern) Value(indirect_branch_thunk_extern) 282 283mindirect-branch-table 284Target Report Var(s390_indirect_branch_table) Init(TARGET_DEFAULT_INDIRECT_BRANCH_TABLE) 285Generate sections .s390_indirect_jump, .s390_indirect_call, 286.s390_return_reg, and .s390_return_mem to contain the indirect branch 287locations which have been patched as part of using one of the 288-mindirect-branch* or -mfunction-return* options. The sections 289consist of an array of 32 bit elements. Each entry holds the offset 290from the entry to the patched location. 291