Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/rs6000/rs6000-opts.h @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | 561a7518be6b |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* Definitions of target machine needed for option handling for GNU compiler, | 1 /* Definitions of target machine needed for option handling for GNU compiler, |
2 for IBM RS/6000. | 2 for IBM RS/6000. |
3 Copyright (C) 2010 | 3 Copyright (C) 2010-2017 Free Software Foundation, Inc. |
4 Free Software Foundation, Inc. | |
5 Contributed by Michael Meissner (meissner@linux.vnet.ibm.com) | 4 Contributed by Michael Meissner (meissner@linux.vnet.ibm.com) |
6 | 5 |
7 This file is part of GCC. | 6 This file is part of GCC. |
8 | 7 |
9 GCC is free software; you can redistribute it and/or modify it | 8 GCC is free software; you can redistribute it and/or modify it |
29 #define RS6000_OPTS_H | 28 #define RS6000_OPTS_H |
30 | 29 |
31 /* Processor type. Order must match cpu attribute in MD file. */ | 30 /* Processor type. Order must match cpu attribute in MD file. */ |
32 enum processor_type | 31 enum processor_type |
33 { | 32 { |
34 PROCESSOR_RIOS1, | |
35 PROCESSOR_RIOS2, | |
36 PROCESSOR_RS64A, | |
37 PROCESSOR_MPCCORE, | |
38 PROCESSOR_PPC403, | |
39 PROCESSOR_PPC405, | |
40 PROCESSOR_PPC440, | |
41 PROCESSOR_PPC476, | |
42 PROCESSOR_PPC601, | 33 PROCESSOR_PPC601, |
43 PROCESSOR_PPC603, | 34 PROCESSOR_PPC603, |
44 PROCESSOR_PPC604, | 35 PROCESSOR_PPC604, |
45 PROCESSOR_PPC604e, | 36 PROCESSOR_PPC604e, |
46 PROCESSOR_PPC620, | 37 PROCESSOR_PPC620, |
47 PROCESSOR_PPC630, | 38 PROCESSOR_PPC630, |
39 | |
48 PROCESSOR_PPC750, | 40 PROCESSOR_PPC750, |
49 PROCESSOR_PPC7400, | 41 PROCESSOR_PPC7400, |
50 PROCESSOR_PPC7450, | 42 PROCESSOR_PPC7450, |
43 | |
44 PROCESSOR_PPC403, | |
45 PROCESSOR_PPC405, | |
46 PROCESSOR_PPC440, | |
47 PROCESSOR_PPC476, | |
48 | |
51 PROCESSOR_PPC8540, | 49 PROCESSOR_PPC8540, |
50 PROCESSOR_PPC8548, | |
52 PROCESSOR_PPCE300C2, | 51 PROCESSOR_PPCE300C2, |
53 PROCESSOR_PPCE300C3, | 52 PROCESSOR_PPCE300C3, |
54 PROCESSOR_PPCE500MC, | 53 PROCESSOR_PPCE500MC, |
55 PROCESSOR_PPCE500MC64, | 54 PROCESSOR_PPCE500MC64, |
55 PROCESSOR_PPCE5500, | |
56 PROCESSOR_PPCE6500, | |
57 | |
56 PROCESSOR_POWER4, | 58 PROCESSOR_POWER4, |
57 PROCESSOR_POWER5, | 59 PROCESSOR_POWER5, |
58 PROCESSOR_POWER6, | 60 PROCESSOR_POWER6, |
59 PROCESSOR_POWER7, | 61 PROCESSOR_POWER7, |
62 PROCESSOR_POWER8, | |
63 PROCESSOR_POWER9, | |
64 | |
65 PROCESSOR_RS64A, | |
66 PROCESSOR_MPCCORE, | |
60 PROCESSOR_CELL, | 67 PROCESSOR_CELL, |
61 PROCESSOR_PPCA2, | 68 PROCESSOR_PPCA2, |
62 PROCESSOR_TITAN | 69 PROCESSOR_TITAN |
63 }; | 70 }; |
71 | |
64 | 72 |
65 /* FP processor type. */ | 73 /* FP processor type. */ |
66 enum fpu_type_t | 74 enum fpu_type_t |
67 { | 75 { |
68 FPU_NONE, /* No FPU */ | 76 FPU_NONE, /* No FPU */ |
69 FPU_SF_LITE, /* Limited Single Precision FPU */ | 77 FPU_SF_LITE, /* Limited Single Precision FPU */ |
70 FPU_DF_LITE, /* Limited Double Precision FPU */ | 78 FPU_DF_LITE, /* Limited Double Precision FPU */ |
71 FPU_SF_FULL, /* Full Single Precision FPU */ | 79 FPU_SF_FULL, /* Full Single Precision FPU */ |
72 FPU_DF_FULL /* Full Double Single Precision FPU */ | 80 FPU_DF_FULL /* Full Double Single Precision FPU */ |
73 }; | 81 }; |
82 | |
74 | 83 |
75 /* Types of costly dependences. */ | 84 /* Types of costly dependences. */ |
76 enum rs6000_dependence_cost | 85 enum rs6000_dependence_cost |
77 { | 86 { |
78 max_dep_latency = 1000, | 87 max_dep_latency = 1000, |
98 }; | 107 }; |
99 | 108 |
100 /* Enumeration to give which calling sequence to use. */ | 109 /* Enumeration to give which calling sequence to use. */ |
101 enum rs6000_abi { | 110 enum rs6000_abi { |
102 ABI_NONE, | 111 ABI_NONE, |
103 ABI_AIX, /* IBM's AIX */ | 112 ABI_AIX, /* IBM's AIX, or Linux ELFv1 */ |
113 ABI_ELFv2, /* Linux ELFv2 ABI */ | |
104 ABI_V4, /* System V.4/eabi */ | 114 ABI_V4, /* System V.4/eabi */ |
105 ABI_DARWIN /* Apple's Darwin (OS X kernel) */ | 115 ABI_DARWIN /* Apple's Darwin (OS X kernel) */ |
106 }; | 116 }; |
107 | 117 |
108 /* Small data support types. */ | 118 /* Small data support types. */ |
129 CMODEL_SMALL, | 139 CMODEL_SMALL, |
130 CMODEL_MEDIUM, | 140 CMODEL_MEDIUM, |
131 CMODEL_LARGE | 141 CMODEL_LARGE |
132 }; | 142 }; |
133 | 143 |
134 /* Describe which vector unit to use for a given machine mode. */ | 144 /* Describe which vector unit to use for a given machine mode. The |
145 VECTOR_MEM_* and VECTOR_UNIT_* macros assume that Altivec, VSX, and | |
146 P8_VECTOR are contiguous. */ | |
135 enum rs6000_vector { | 147 enum rs6000_vector { |
136 VECTOR_NONE, /* Type is not a vector or not supported */ | 148 VECTOR_NONE, /* Type is not a vector or not supported */ |
137 VECTOR_ALTIVEC, /* Use altivec for vector processing */ | 149 VECTOR_ALTIVEC, /* Use altivec for vector processing */ |
138 VECTOR_VSX, /* Use VSX for vector processing */ | 150 VECTOR_VSX, /* Use VSX for vector processing */ |
151 VECTOR_P8_VECTOR, /* Use ISA 2.07 VSX for vector processing */ | |
139 VECTOR_PAIRED, /* Use paired floating point for vectors */ | 152 VECTOR_PAIRED, /* Use paired floating point for vectors */ |
140 VECTOR_SPE, /* Use SPE for vector processing */ | |
141 VECTOR_OTHER /* Some other vector unit */ | 153 VECTOR_OTHER /* Some other vector unit */ |
142 }; | 154 }; |
143 | 155 |
156 /* Where to get the canary for the stack protector. */ | |
157 enum stack_protector_guard { | |
158 SSP_TLS, /* per-thread canary in TLS block */ | |
159 SSP_GLOBAL /* global canary */ | |
160 }; | |
161 | |
162 /* No enumeration is defined to index the -mcpu= values (entries in | |
163 processor_target_table), with the type int being used instead, but | |
164 we need to distinguish the special "native" value. */ | |
165 #define RS6000_CPU_OPTION_NATIVE -1 | |
166 | |
144 #endif | 167 #endif |