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. */