Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/powerpcspe/powerpcspe.h @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 /* Definitions of target machine for GNU compiler, for IBM RS/6000. | 1 /* Definitions of target machine for GNU compiler, for IBM RS/6000. |
2 Copyright (C) 1992-2017 Free Software Foundation, Inc. | 2 Copyright (C) 1992-2018 Free Software Foundation, Inc. |
3 Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) | 3 Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) |
4 | 4 |
5 This file is part of GCC. | 5 This file is part of GCC. |
6 | 6 |
7 GCC is free software; you can redistribute it and/or modify it | 7 GCC is free software; you can redistribute it and/or modify it |
69 | 69 |
70 #ifndef TARGET_PAIRED_FLOAT | 70 #ifndef TARGET_PAIRED_FLOAT |
71 #define TARGET_PAIRED_FLOAT 0 | 71 #define TARGET_PAIRED_FLOAT 0 |
72 #endif | 72 #endif |
73 | 73 |
74 #ifdef HAVE_AS_POPCNTB | |
75 #define ASM_CPU_POWER5_SPEC "-mpower5" | 74 #define ASM_CPU_POWER5_SPEC "-mpower5" |
76 #else | |
77 #define ASM_CPU_POWER5_SPEC "-mpower4" | |
78 #endif | |
79 | |
80 #ifdef HAVE_AS_DFP | |
81 #define ASM_CPU_POWER6_SPEC "-mpower6 -maltivec" | 75 #define ASM_CPU_POWER6_SPEC "-mpower6 -maltivec" |
82 #else | |
83 #define ASM_CPU_POWER6_SPEC "-mpower4 -maltivec" | |
84 #endif | |
85 | |
86 #ifdef HAVE_AS_POPCNTD | |
87 #define ASM_CPU_POWER7_SPEC "-mpower7" | 76 #define ASM_CPU_POWER7_SPEC "-mpower7" |
88 #else | |
89 #define ASM_CPU_POWER7_SPEC "-mpower4 -maltivec" | |
90 #endif | |
91 | |
92 #ifdef HAVE_AS_POWER8 | |
93 #define ASM_CPU_POWER8_SPEC "-mpower8" | 77 #define ASM_CPU_POWER8_SPEC "-mpower8" |
94 #else | |
95 #define ASM_CPU_POWER8_SPEC ASM_CPU_POWER7_SPEC | |
96 #endif | |
97 | |
98 #ifdef HAVE_AS_POWER9 | |
99 #define ASM_CPU_POWER9_SPEC "-mpower9" | 78 #define ASM_CPU_POWER9_SPEC "-mpower9" |
100 #else | 79 |
101 #define ASM_CPU_POWER9_SPEC ASM_CPU_POWER8_SPEC | |
102 #endif | |
103 | |
104 #ifdef HAVE_AS_DCI | |
105 #define ASM_CPU_476_SPEC "-m476" | 80 #define ASM_CPU_476_SPEC "-m476" |
106 #else | |
107 #define ASM_CPU_476_SPEC "-mpower4" | |
108 #endif | |
109 | 81 |
110 /* Common ASM definitions used by ASM_SPEC among the various targets for | 82 /* Common ASM definitions used by ASM_SPEC among the various targets for |
111 handling -mcpu=xxx switches. There is a parallel list in driver-powerpcspe.c to | 83 handling -mcpu=xxx switches. There is a parallel list in driver-powerpcspe.c to |
112 provide the default assembler options if the user uses -mcpu=native, so if | 84 provide the default assembler options if the user uses -mcpu=native, so if |
113 you make changes here, make them also there. */ | 85 you make changes here, make them also there. */ |
238 #ifndef HAVE_AS_MFCRF | 210 #ifndef HAVE_AS_MFCRF |
239 #undef TARGET_MFCRF | 211 #undef TARGET_MFCRF |
240 #define TARGET_MFCRF 0 | 212 #define TARGET_MFCRF 0 |
241 #endif | 213 #endif |
242 | 214 |
243 /* Define TARGET_POPCNTB if the target assembler does not support the | |
244 popcount byte instruction. */ | |
245 | |
246 #ifndef HAVE_AS_POPCNTB | |
247 #undef TARGET_POPCNTB | |
248 #define TARGET_POPCNTB 0 | |
249 #endif | |
250 | |
251 /* Define TARGET_FPRND if the target assembler does not support the | |
252 fp rounding instructions. */ | |
253 | |
254 #ifndef HAVE_AS_FPRND | |
255 #undef TARGET_FPRND | |
256 #define TARGET_FPRND 0 | |
257 #endif | |
258 | |
259 /* Define TARGET_CMPB if the target assembler does not support the | |
260 cmpb instruction. */ | |
261 | |
262 #ifndef HAVE_AS_CMPB | |
263 #undef TARGET_CMPB | |
264 #define TARGET_CMPB 0 | |
265 #endif | |
266 | |
267 /* Define TARGET_MFPGPR if the target assembler does not support the | |
268 mffpr and mftgpr instructions. */ | |
269 | |
270 #ifndef HAVE_AS_MFPGPR | |
271 #undef TARGET_MFPGPR | |
272 #define TARGET_MFPGPR 0 | |
273 #endif | |
274 | |
275 /* Define TARGET_DFP if the target assembler does not support decimal | |
276 floating point instructions. */ | |
277 #ifndef HAVE_AS_DFP | |
278 #undef TARGET_DFP | |
279 #define TARGET_DFP 0 | |
280 #endif | |
281 | |
282 /* Define TARGET_POPCNTD if the target assembler does not support the | |
283 popcount word and double word instructions. */ | |
284 | |
285 #ifndef HAVE_AS_POPCNTD | |
286 #undef TARGET_POPCNTD | |
287 #define TARGET_POPCNTD 0 | |
288 #endif | |
289 | |
290 /* Define the ISA 2.07 flags as 0 if the target assembler does not support the | |
291 waitasecond instruction. Allow -mpower8-fusion, since it does not add new | |
292 instructions. */ | |
293 | |
294 #ifndef HAVE_AS_POWER8 | |
295 #undef TARGET_DIRECT_MOVE | |
296 #undef TARGET_CRYPTO | |
297 #undef TARGET_HTM | |
298 #undef TARGET_P8_VECTOR | |
299 #define TARGET_DIRECT_MOVE 0 | |
300 #define TARGET_CRYPTO 0 | |
301 #define TARGET_HTM 0 | |
302 #define TARGET_P8_VECTOR 0 | |
303 #endif | |
304 | |
305 /* Define the ISA 3.0 flags as 0 if the target assembler does not support | |
306 Power9 instructions. Allow -mpower9-fusion, since it does not add new | |
307 instructions. Allow -misel, since it predates ISA 3.0 and does | |
308 not require any Power9 features. */ | |
309 | |
310 #ifndef HAVE_AS_POWER9 | |
311 #undef TARGET_FLOAT128_HW | |
312 #undef TARGET_MODULO | |
313 #undef TARGET_P9_VECTOR | |
314 #undef TARGET_P9_MINMAX | |
315 #undef TARGET_P9_DFORM_SCALAR | |
316 #undef TARGET_P9_DFORM_VECTOR | |
317 #undef TARGET_P9_MISC | |
318 #define TARGET_FLOAT128_HW 0 | |
319 #define TARGET_MODULO 0 | |
320 #define TARGET_P9_VECTOR 0 | |
321 #define TARGET_P9_MINMAX 0 | |
322 #define TARGET_P9_DFORM_SCALAR 0 | |
323 #define TARGET_P9_DFORM_VECTOR 0 | |
324 #define TARGET_P9_MISC 0 | |
325 #endif | |
326 | |
327 /* Define TARGET_LWSYNC_INSTRUCTION if the assembler knows about lwsync. If | |
328 not, generate the lwsync code as an integer constant. */ | |
329 #ifdef HAVE_AS_LWSYNC | |
330 #define TARGET_LWSYNC_INSTRUCTION 1 | |
331 #else | |
332 #define TARGET_LWSYNC_INSTRUCTION 0 | |
333 #endif | |
334 | |
335 /* Define TARGET_TLS_MARKERS if the target assembler does not support | 215 /* Define TARGET_TLS_MARKERS if the target assembler does not support |
336 arg markers for __tls_get_addr calls. */ | 216 arg markers for __tls_get_addr calls. */ |
337 #ifndef HAVE_AS_TLS_MARKERS | 217 #ifndef HAVE_AS_TLS_MARKERS |
338 #undef TARGET_TLS_MARKERS | 218 #undef TARGET_TLS_MARKERS |
339 #define TARGET_TLS_MARKERS 0 | 219 #define TARGET_TLS_MARKERS 0 |
1664 machines. See `function.c' for details. | 1544 machines. See `function.c' for details. |
1665 | 1545 |
1666 This value must be a multiple of STACK_BOUNDARY (hard coded in | 1546 This value must be a multiple of STACK_BOUNDARY (hard coded in |
1667 `emit-rtl.c'). */ | 1547 `emit-rtl.c'). */ |
1668 #define STACK_DYNAMIC_OFFSET(FUNDECL) \ | 1548 #define STACK_DYNAMIC_OFFSET(FUNDECL) \ |
1669 RS6000_ALIGN (crtl->outgoing_args_size + STACK_POINTER_OFFSET, \ | 1549 RS6000_ALIGN (crtl->outgoing_args_size.to_constant () \ |
1550 + STACK_POINTER_OFFSET, \ | |
1670 (TARGET_ALTIVEC || TARGET_VSX) ? 16 : 8) | 1551 (TARGET_ALTIVEC || TARGET_VSX) ? 16 : 8) |
1671 | 1552 |
1672 /* If we generate an insn to push BYTES bytes, | 1553 /* If we generate an insn to push BYTES bytes, |
1673 this says how many the stack pointer really advances by. | 1554 this says how many the stack pointer really advances by. |
1674 On RS/6000, don't define this because there are no push insns. */ | 1555 On RS/6000, don't define this because there are no push insns. */ |