1; Options for the Adapteva EPIPHANY port of the compiler 2; 3; Copyright (C) 2005-2018 Free Software Foundation, Inc. 4; Contributed by Embecosm on behalf of Adapteva, Inc. 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 22mhalf-reg-file 23Target Mask(HALF_REG_FILE) 24Don't use any of r32..r63. 25 26mprefer-short-insn-regs 27Target Mask(PREFER_SHORT_INSN_REGS) 28preferentially allocate registers that allow short instruction generation. 29 30mbranch-cost= 31Target RejectNegative Joined UInteger Var(epiphany_branch_cost) Init(3) 32Set branch cost. 33 34mcmove 35Target Mask(CMOVE) 36enable conditional move instruction usage. 37 38mnops= 39Target RejectNegative Joined UInteger Var(epiphany_n_nops) Init(0) 40set number of nops to emit before each insn pattern. 41 42; Problems with using the flags from fsub for comparison are: 43; - Because of underflow (lack of subnormal numbers), different small numbers 44; can compare as equal. 45; - the set of comparisons is limited, and reversing comparisons doesn't work 46; in the presence of NaNs. 47; The latter problem might be tolerated with -ffinite-math-only , but nothing 48; in -funsafe-math-optimizations says different small numbers may be considered 49; equal. 50msoft-cmpsf 51Target Mask(SOFT_CMPSF) 52Use software floating point comparisons. 53 54msplit-lohi 55Target Mask(SPLIT_LOHI) 56Enable split of 32 bit immediate loads into low / high part. 57 58mpost-inc 59Target Mask(POST_INC) 60Enable use of POST_INC / POST_DEC. 61 62mpost-modify 63Target Mask(POST_MODIFY) 64Enable use of POST_MODIFY. 65 66mstack-offset= 67Target RejectNegative Joined UInteger Var(epiphany_stack_offset) Init(EPIPHANY_STACK_OFFSET) 68Set number of bytes on the stack preallocated for use by the callee. 69 70mround-nearest 71target Mask(ROUND_NEAREST) 72Assume round to nearest is selected for purposes of scheduling. 73 74mlong-calls 75Target Mask(LONG_CALLS) 76Generate call insns as indirect calls. 77 78mshort-calls 79Target Mask(SHORT_CALLS) 80Generate call insns as direct calls. 81 82msmall16 83Target Mask(SMALL16) 84Assume labels and symbols can be addressed using 16 bit absolute addresses. 85 86mfp-mode= 87Target RejectNegative Joined Var(epiphany_normal_fp_mode) Enum(attr_fp_mode) Init(FP_MODE_CALLER) 88 89; The values are from enum attr_fp_mode, but using that enum would bring 90; problems with enum forward declarations. 91Enum 92Name(attr_fp_mode) Type(int) 93 94EnumValue 95Enum(attr_fp_mode) String(caller) Value(FP_MODE_CALLER) 96 97EnumValue 98Enum(attr_fp_mode) String(round-nearest) Value(FP_MODE_ROUND_NEAREST) 99 100EnumValue 101Enum(attr_fp_mode) String(truncate) Value(FP_MODE_ROUND_TRUNC) 102 103EnumValue 104Enum(attr_fp_mode) String(int) Value(FP_MODE_INT) 105 106may-round-for-trunc 107Target Mask(MAY_ROUND_FOR_TRUNC) 108A floatig point to integer truncation may be replaced with rounding to save mode switching. 109 110mvect-double 111Target Mask(VECT_DOUBLE) 112Vectorize for double-word operations. 113 114max-vect-align= 115Target RejectNegative Joined Var(epiphany_vect_align) Enum(vect_align) Init(8) 116 117Enum 118Name(vect_align) Type(int) 119 120EnumValue 121Enum(vect_align) String(4) Value(4) 122 123EnumValue 124Enum(vect_align) String(8) Value(8) 125 126msplit-vecmove-early 127Target Mask(SPLIT_VECMOVE_EARLY) 128Split unaligned 8 byte vector moves before post-modify address generation. 129 130mfp-iarith 131Target Mask(FP_IARITH) 132Use the floating point unit for integer add/subtract. 133 134m1reg- 135Target RejectNegative Joined Var(epiphany_m1reg) Enum(m1reg) Init(-1) 136Set register to hold -1. 137 138Enum 139Name(m1reg) Type(int) 140 141EnumValue 142Enum(m1reg) String(none) Value(-1) 143 144EnumValue 145Enum(m1reg) String(r43) Value(43) 146 147EnumValue 148Enum(m1reg) String(r63) Value(63) 149