1; Options for the rs6000 port of the compiler 2; 3; Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. 4; Contributed by Aldy Hernandez <aldy@quesejoda.com>. 5; 6; This file is part of GCC. 7; 8; GCC is free software; you can redistribute it and/or modify it under 9; the terms of the GNU General Public License as published by the Free 10; Software Foundation; either version 3, or (at your option) any later 11; version. 12; 13; GCC is distributed in the hope that it will be useful, but WITHOUT 14; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 16; License for more details. 17; 18; You should have received a copy of the GNU General Public License 19; along with GCC; see the file COPYING3. If not see 20; <http://www.gnu.org/licenses/>. 21 22mpower 23Target Report RejectNegative Mask(POWER) 24Use POWER instruction set 25 26mno-power 27Target Report RejectNegative 28Do not use POWER instruction set 29 30mpower2 31Target Report Mask(POWER2) 32Use POWER2 instruction set 33 34mpowerpc 35Target Report RejectNegative Mask(POWERPC) 36Use PowerPC instruction set 37 38mno-powerpc 39Target Report RejectNegative 40Do not use PowerPC instruction set 41 42mpowerpc64 43Target Report Mask(POWERPC64) 44Use PowerPC-64 instruction set 45 46mpowerpc-gpopt 47Target Report Mask(PPC_GPOPT) 48Use PowerPC General Purpose group optional instructions 49 50mpowerpc-gfxopt 51Target Report Mask(PPC_GFXOPT) 52Use PowerPC Graphics group optional instructions 53 54mmfcrf 55Target Report Mask(MFCRF) 56Use PowerPC V2.01 single field mfcr instruction 57 58mpopcntb 59Target Report Mask(POPCNTB) 60Use PowerPC V2.02 popcntb instruction 61 62mfprnd 63Target Report Mask(FPRND) 64Use PowerPC V2.02 floating point rounding instructions 65 66mcmpb 67Target Report Mask(CMPB) 68Use PowerPC V2.05 compare bytes instruction 69 70mmfpgpr 71Target Report Mask(MFPGPR) 72Use extended PowerPC V2.05 move floating point to/from GPR instructions 73 74maltivec 75Target Report Mask(ALTIVEC) 76Use AltiVec instructions 77 78mhard-dfp 79Target Report Mask(DFP) 80Use decimal floating point instructions 81 82mmulhw 83Target Report Mask(MULHW) 84Use 4xx half-word multiply instructions 85 86mdlmzb 87Target Report Mask(DLMZB) 88Use 4xx string-search dlmzb instruction 89 90mmultiple 91Target Report Mask(MULTIPLE) 92Generate load/store multiple instructions 93 94mstring 95Target Report Mask(STRING) 96Generate string instructions for block moves 97 98mnew-mnemonics 99Target Report RejectNegative Mask(NEW_MNEMONICS) 100Use new mnemonics for PowerPC architecture 101 102mold-mnemonics 103Target Report RejectNegative InverseMask(NEW_MNEMONICS) 104Use old mnemonics for PowerPC architecture 105 106msoft-float 107Target Report RejectNegative Mask(SOFT_FLOAT) 108Do not use hardware floating point 109 110mhard-float 111Target Report RejectNegative InverseMask(SOFT_FLOAT, HARD_FLOAT) 112Use hardware floating point 113 114mpopcntd 115Target Report Mask(POPCNTD) 116Use PowerPC V2.06 popcntd instruction 117 118mvsx 119Target Report Mask(VSX) 120Use vector/scalar (VSX) instructions 121 122mvsx-scalar-double 123Target Undocumented Report Var(TARGET_VSX_SCALAR_DOUBLE) Init(-1) 124; If -mvsx, use VSX arithmetic instructions for scalar double (on by default) 125 126mvsx-scalar-memory 127Target Undocumented Report Var(TARGET_VSX_SCALAR_MEMORY) 128; If -mvsx, use VSX scalar memory reference instructions for scalar double (off by default) 129 130mvsx-align-128 131Target Undocumented Report Var(TARGET_VSX_ALIGN_128) 132; If -mvsx, set alignment to 128 bits instead of 32/64 133 134mallow-movmisalign 135Target Undocumented Var(TARGET_ALLOW_MOVMISALIGN) Init(-1) 136; Allow/disallow the movmisalign in DF/DI vectors 137 138mallow-df-permute 139Target Undocumented Var(TARGET_ALLOW_DF_PERMUTE) 140; Allow/disallow permutation of DF/DI vectors 141 142msched-groups 143Target Undocumented Report Var(TARGET_SCHED_GROUPS) Init(-1) 144; Explicitly set/unset whether rs6000_sched_groups is set 145 146malways-hint 147Target Undocumented Report Var(TARGET_ALWAYS_HINT) Init(-1) 148; Explicitly set/unset whether rs6000_always_hint is set 149 150malign-branch-targets 151Target Undocumented Report Var(TARGET_ALIGN_BRANCH_TARGETS) Init(-1) 152; Explicitly set/unset whether rs6000_align_branch_targets is set 153 154mvectorize-builtins 155Target Undocumented Report Var(TARGET_VECTORIZE_BUILTINS) Init(-1) 156; Explicitly control whether we vectorize the builtins or not. 157 158mno-update 159Target Report RejectNegative Mask(NO_UPDATE) 160Do not generate load/store with update instructions 161 162mupdate 163Target Report RejectNegative InverseMask(NO_UPDATE, UPDATE) 164Generate load/store with update instructions 165 166mavoid-indexed-addresses 167Target Report Var(TARGET_AVOID_XFORM) Init(-1) 168Avoid generation of indexed load/store instructions when possible 169 170mfused-madd 171Target Report Var(TARGET_FUSED_MADD) Init(1) 172Generate fused multiply/add instructions 173 174mtls-markers 175Target Report Var(tls_markers) Init(1) 176Mark __tls_get_addr calls with argument info 177 178msched-epilog 179Target Undocumented Var(TARGET_SCHED_PROLOG) Init(1) 180 181msched-prolog 182Target Report Var(TARGET_SCHED_PROLOG) VarExists 183Schedule the start and end of the procedure 184 185maix-struct-return 186Target Report RejectNegative Var(aix_struct_return) 187Return all structures in memory (AIX default) 188 189msvr4-struct-return 190Target Report RejectNegative Var(aix_struct_return,0) VarExists 191Return small structures in registers (SVR4 default) 192 193mxl-compat 194Target Report Var(TARGET_XL_COMPAT) 195Conform more closely to IBM XLC semantics 196 197mrecip 198Target Report Var(TARGET_RECIP) 199Generate software reciprocal sqrt for better throughput 200 201mno-fp-in-toc 202Target Report RejectNegative Var(TARGET_NO_FP_IN_TOC) 203Do not place floating point constants in TOC 204 205mfp-in-toc 206Target Report RejectNegative Var(TARGET_NO_FP_IN_TOC,0) 207Place floating point constants in TOC 208 209mno-sum-in-toc 210Target RejectNegative Var(TARGET_NO_SUM_IN_TOC) 211Do not place symbol+offset constants in TOC 212 213msum-in-toc 214Target RejectNegative Var(TARGET_NO_SUM_IN_TOC,0) VarExists 215Place symbol+offset constants in TOC 216 217; Output only one TOC entry per module. Normally linking fails if 218; there are more than 16K unique variables/constants in an executable. With 219; this option, linking fails only if there are more than 16K modules, or 220; if there are more than 16K unique variables/constant in a single module. 221; 222; This is at the cost of having 2 extra loads and one extra store per 223; function, and one less allocable register. 224mminimal-toc 225Target Report Mask(MINIMAL_TOC) 226Use only one TOC entry per procedure 227 228mfull-toc 229Target Report 230Put everything in the regular TOC 231 232mvrsave 233Target Report Var(TARGET_ALTIVEC_VRSAVE) 234Generate VRSAVE instructions when generating AltiVec code 235 236mvrsave= 237Target RejectNegative Joined 238-mvrsave=yes/no Deprecated option. Use -mvrsave/-mno-vrsave instead 239 240misel 241Target Report Mask(ISEL) 242Generate isel instructions 243 244misel= 245Target RejectNegative Joined 246-misel=yes/no Deprecated option. Use -misel/-mno-isel instead 247 248mspe 249Target 250Generate SPE SIMD instructions on E500 251 252mpaired 253Target Var(rs6000_paired_float) 254Generate PPC750CL paired-single instructions 255 256mspe= 257Target RejectNegative Joined 258-mspe=yes/no Deprecated option. Use -mspe/-mno-spe instead 259 260mdebug= 261Target RejectNegative Joined 262-mdebug= Enable debug output 263 264mabi= 265Target RejectNegative Joined 266-mabi= Specify ABI to use 267 268mcpu= 269Target RejectNegative Joined 270-mcpu= Use features of and schedule code for given CPU 271 272mtune= 273Target RejectNegative Joined 274-mtune= Schedule code for given CPU 275 276mtraceback= 277Target RejectNegative Joined 278-mtraceback= Select full, part, or no traceback table 279 280mlongcall 281Target Report Var(rs6000_default_long_calls) 282Avoid all range limits on call instructions 283 284mgen-cell-microcode 285Target Report Var(rs6000_gen_cell_microcode) Init(-1) 286Generate Cell microcode 287 288mwarn-cell-microcode 289Target Var(rs6000_warn_cell_microcode) Init(0) Warning 290Warn when a Cell microcoded instruction is emitted 291 292mwarn-altivec-long 293Target Var(rs6000_warn_altivec_long) Init(1) 294Warn about deprecated 'vector long ...' AltiVec type usage 295 296mfloat-gprs= 297Target RejectNegative Joined 298-mfloat-gprs= Select GPR floating point method 299 300mlong-double- 301Target RejectNegative Joined UInteger 302-mlong-double-<n> Specify size of long double (64 or 128 bits) 303 304msched-costly-dep= 305Target RejectNegative Joined 306Determine which dependences between insns are considered costly 307 308minsert-sched-nops= 309Target RejectNegative Joined 310Specify which post scheduling nop insertion scheme to apply 311 312malign- 313Target RejectNegative Joined 314Specify alignment of structure fields default/natural 315 316mprioritize-restricted-insns= 317Target RejectNegative Joined UInteger Var(rs6000_sched_restricted_insns_priority) 318Specify scheduling priority for dispatch slot restricted insns 319 320msingle-float 321Target RejectNegative Var(rs6000_single_float) 322Single-precision floating point unit 323 324mdouble-float 325Target RejectNegative Var(rs6000_double_float) 326Double-precision floating point unit 327 328msimple-fpu 329Target RejectNegative Var(rs6000_simple_fpu) 330Floating point unit does not support divide & sqrt 331 332mfpu= 333Target RejectNegative Joined 334-mfpu= Specify FP (sp, dp, sp-lite, dp-lite) (implies -mxilinx-fpu) 335 336mxilinx-fpu 337Target Var(rs6000_xilinx_fpu) 338Specify Xilinx FPU. 339 340 341