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