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