annotate gcc/config/powerpcspe/powerpcspe-opts.h @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Definitions of target machine needed for option handling for GNU compiler,
kono
parents:
diff changeset
2 for IBM RS/6000.
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
3 Copyright (C) 2010-2018 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
4 Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 This file is part of GCC.
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 GCC is free software; you can redistribute it and/or modify it
kono
parents:
diff changeset
9 under the terms of the GNU General Public License as published
kono
parents:
diff changeset
10 by the Free Software Foundation; either version 3, or (at your
kono
parents:
diff changeset
11 option) any later version.
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 GCC is distributed in the hope that it will be useful, but WITHOUT
kono
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
kono
parents:
diff changeset
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
kono
parents:
diff changeset
16 License for more details.
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 Under Section 7 of GPL version 3, you are granted additional
kono
parents:
diff changeset
19 permissions described in the GCC Runtime Library Exception, version
kono
parents:
diff changeset
20 3.1, as published by the Free Software Foundation.
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 You should have received a copy of the GNU General Public License and
kono
parents:
diff changeset
23 a copy of the GCC Runtime Library Exception along with this program;
kono
parents:
diff changeset
24 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
kono
parents:
diff changeset
25 <http://www.gnu.org/licenses/>. */
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 #ifndef RS6000_OPTS_H
kono
parents:
diff changeset
28 #define RS6000_OPTS_H
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 /* Processor type. Order must match cpu attribute in MD file. */
kono
parents:
diff changeset
31 enum processor_type
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 PROCESSOR_PPC601,
kono
parents:
diff changeset
34 PROCESSOR_PPC603,
kono
parents:
diff changeset
35 PROCESSOR_PPC604,
kono
parents:
diff changeset
36 PROCESSOR_PPC604e,
kono
parents:
diff changeset
37 PROCESSOR_PPC620,
kono
parents:
diff changeset
38 PROCESSOR_PPC630,
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 PROCESSOR_PPC750,
kono
parents:
diff changeset
41 PROCESSOR_PPC7400,
kono
parents:
diff changeset
42 PROCESSOR_PPC7450,
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 PROCESSOR_PPC403,
kono
parents:
diff changeset
45 PROCESSOR_PPC405,
kono
parents:
diff changeset
46 PROCESSOR_PPC440,
kono
parents:
diff changeset
47 PROCESSOR_PPC476,
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 PROCESSOR_PPC8540,
kono
parents:
diff changeset
50 PROCESSOR_PPC8548,
kono
parents:
diff changeset
51 PROCESSOR_PPCE300C2,
kono
parents:
diff changeset
52 PROCESSOR_PPCE300C3,
kono
parents:
diff changeset
53 PROCESSOR_PPCE500MC,
kono
parents:
diff changeset
54 PROCESSOR_PPCE500MC64,
kono
parents:
diff changeset
55 PROCESSOR_PPCE5500,
kono
parents:
diff changeset
56 PROCESSOR_PPCE6500,
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 PROCESSOR_POWER4,
kono
parents:
diff changeset
59 PROCESSOR_POWER5,
kono
parents:
diff changeset
60 PROCESSOR_POWER6,
kono
parents:
diff changeset
61 PROCESSOR_POWER7,
kono
parents:
diff changeset
62 PROCESSOR_POWER8,
kono
parents:
diff changeset
63 PROCESSOR_POWER9,
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 PROCESSOR_RS64A,
kono
parents:
diff changeset
66 PROCESSOR_MPCCORE,
kono
parents:
diff changeset
67 PROCESSOR_CELL,
kono
parents:
diff changeset
68 PROCESSOR_PPCA2,
kono
parents:
diff changeset
69 PROCESSOR_TITAN
kono
parents:
diff changeset
70 };
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 /* FP processor type. */
kono
parents:
diff changeset
74 enum fpu_type_t
kono
parents:
diff changeset
75 {
kono
parents:
diff changeset
76 FPU_NONE, /* No FPU */
kono
parents:
diff changeset
77 FPU_SF_LITE, /* Limited Single Precision FPU */
kono
parents:
diff changeset
78 FPU_DF_LITE, /* Limited Double Precision FPU */
kono
parents:
diff changeset
79 FPU_SF_FULL, /* Full Single Precision FPU */
kono
parents:
diff changeset
80 FPU_DF_FULL /* Full Double Single Precision FPU */
kono
parents:
diff changeset
81 };
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83
kono
parents:
diff changeset
84 /* Types of costly dependences. */
kono
parents:
diff changeset
85 enum rs6000_dependence_cost
kono
parents:
diff changeset
86 {
kono
parents:
diff changeset
87 max_dep_latency = 1000,
kono
parents:
diff changeset
88 no_dep_costly,
kono
parents:
diff changeset
89 all_deps_costly,
kono
parents:
diff changeset
90 true_store_to_load_dep_costly,
kono
parents:
diff changeset
91 store_to_load_dep_costly
kono
parents:
diff changeset
92 };
kono
parents:
diff changeset
93
kono
parents:
diff changeset
94 /* Types of nop insertion schemes in sched target hook sched_finish. */
kono
parents:
diff changeset
95 enum rs6000_nop_insertion
kono
parents:
diff changeset
96 {
kono
parents:
diff changeset
97 sched_finish_regroup_exact = 1000,
kono
parents:
diff changeset
98 sched_finish_pad_groups,
kono
parents:
diff changeset
99 sched_finish_none
kono
parents:
diff changeset
100 };
kono
parents:
diff changeset
101
kono
parents:
diff changeset
102 /* Dispatch group termination caused by an insn. */
kono
parents:
diff changeset
103 enum group_termination
kono
parents:
diff changeset
104 {
kono
parents:
diff changeset
105 current_group,
kono
parents:
diff changeset
106 previous_group
kono
parents:
diff changeset
107 };
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109 /* Enumeration to give which calling sequence to use. */
kono
parents:
diff changeset
110 enum rs6000_abi {
kono
parents:
diff changeset
111 ABI_NONE,
kono
parents:
diff changeset
112 ABI_AIX, /* IBM's AIX, or Linux ELFv1 */
kono
parents:
diff changeset
113 ABI_ELFv2, /* Linux ELFv2 ABI */
kono
parents:
diff changeset
114 ABI_V4, /* System V.4/eabi */
kono
parents:
diff changeset
115 ABI_DARWIN /* Apple's Darwin (OS X kernel) */
kono
parents:
diff changeset
116 };
kono
parents:
diff changeset
117
kono
parents:
diff changeset
118 /* Small data support types. */
kono
parents:
diff changeset
119 enum rs6000_sdata_type {
kono
parents:
diff changeset
120 SDATA_NONE, /* No small data support. */
kono
parents:
diff changeset
121 SDATA_DATA, /* Just put data in .sbss/.sdata, don't use relocs. */
kono
parents:
diff changeset
122 SDATA_SYSV, /* Use r13 to point to .sdata/.sbss. */
kono
parents:
diff changeset
123 SDATA_EABI /* Use r13 like above, r2 points to .sdata2/.sbss2. */
kono
parents:
diff changeset
124 };
kono
parents:
diff changeset
125
kono
parents:
diff changeset
126 /* Type of traceback to use. */
kono
parents:
diff changeset
127 enum rs6000_traceback_type {
kono
parents:
diff changeset
128 traceback_default = 0,
kono
parents:
diff changeset
129 traceback_none,
kono
parents:
diff changeset
130 traceback_part,
kono
parents:
diff changeset
131 traceback_full
kono
parents:
diff changeset
132 };
kono
parents:
diff changeset
133
kono
parents:
diff changeset
134 /* Code model for 64-bit linux.
kono
parents:
diff changeset
135 small: 16-bit toc offsets.
kono
parents:
diff changeset
136 medium: 32-bit toc offsets, static data and code within 2G of TOC pointer.
kono
parents:
diff changeset
137 large: 32-bit toc offsets, no limit on static data and code. */
kono
parents:
diff changeset
138 enum rs6000_cmodel {
kono
parents:
diff changeset
139 CMODEL_SMALL,
kono
parents:
diff changeset
140 CMODEL_MEDIUM,
kono
parents:
diff changeset
141 CMODEL_LARGE
kono
parents:
diff changeset
142 };
kono
parents:
diff changeset
143
kono
parents:
diff changeset
144 /* Describe which vector unit to use for a given machine mode. The
kono
parents:
diff changeset
145 VECTOR_MEM_* and VECTOR_UNIT_* macros assume that Altivec, VSX, and
kono
parents:
diff changeset
146 P8_VECTOR are contiguous. */
kono
parents:
diff changeset
147 enum rs6000_vector {
kono
parents:
diff changeset
148 VECTOR_NONE, /* Type is not a vector or not supported */
kono
parents:
diff changeset
149 VECTOR_ALTIVEC, /* Use altivec for vector processing */
kono
parents:
diff changeset
150 VECTOR_VSX, /* Use VSX for vector processing */
kono
parents:
diff changeset
151 VECTOR_P8_VECTOR, /* Use ISA 2.07 VSX for vector processing */
kono
parents:
diff changeset
152 VECTOR_PAIRED, /* Use paired floating point for vectors */
kono
parents:
diff changeset
153 VECTOR_SPE, /* Use SPE for vector processing */
kono
parents:
diff changeset
154 VECTOR_OTHER /* Some other vector unit */
kono
parents:
diff changeset
155 };
kono
parents:
diff changeset
156
kono
parents:
diff changeset
157 /* Where to get the canary for the stack protector. */
kono
parents:
diff changeset
158 enum stack_protector_guard {
kono
parents:
diff changeset
159 SSP_TLS, /* per-thread canary in TLS block */
kono
parents:
diff changeset
160 SSP_GLOBAL /* global canary */
kono
parents:
diff changeset
161 };
kono
parents:
diff changeset
162
kono
parents:
diff changeset
163 /* No enumeration is defined to index the -mcpu= values (entries in
kono
parents:
diff changeset
164 processor_target_table), with the type int being used instead, but
kono
parents:
diff changeset
165 we need to distinguish the special "native" value. */
kono
parents:
diff changeset
166 #define RS6000_CPU_OPTION_NATIVE -1
kono
parents:
diff changeset
167
kono
parents:
diff changeset
168 #endif