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