diff options
author | Janis Johnson <janis187@us.ibm.com> | 2007-02-20 23:11:43 +0000 |
---|---|---|
committer | Janis Johnson <janis@gcc.gnu.org> | 2007-02-20 23:11:43 +0000 |
commit | b639c3c245c82affaa8d0d1784259a312936c075 (patch) | |
tree | efb29cd2b4a4e9481050182b5b8b3e7c9903b4ac /gcc/config/rs6000 | |
parent | 7cd689bcf045c55b1786cdbc84c9f63a07070a58 (diff) | |
download | gcc-b639c3c245c82affaa8d0d1784259a312936c075.tar.gz |
invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
* doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
* configure.ac (HAVE_GAS_CMPB): Check for assembler support of the
cmpb instruction.
(HAVE_GAS_DFP): Check for assembler support of decimal floating
point instructions.
* configure: Regenerate.
* config.in: Regenerate.
* config/rs6000/rs6000.opt (mcmpb, mdfp): New.
* config/rs6000/rs6000.c (rs6000_override_options): Add CMPB and DFP
masks to power6 and power6x and to POWERPC_MASKS.
* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): Define
_ARCH_PWR6.
* config/rs6000/rs6000.h: Check assembler support for CMPB and DFP.
* config/rs6000/sysv4.opt (mprototype): Use variable, not mask.
* config/rs6000/linux64.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
Access PROTOTYPE as variable, not mask.
From-SVN: r122179
Diffstat (limited to 'gcc/config/rs6000')
-rw-r--r-- | gcc/config/rs6000/linux64.h | 4 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000-c.c | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 15 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.opt | 10 | ||||
-rw-r--r-- | gcc/config/rs6000/sysv4.opt | 2 |
6 files changed, 32 insertions, 7 deletions
diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h index 5b954a9535d..8937dcd7b72 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -98,9 +98,9 @@ extern int dot_symbols; target_flags &= ~MASK_EABI; \ error (INVALID_64BIT, "eabi"); \ } \ - if (target_flags & MASK_PROTOTYPE) \ + if (TARGET_PROTOTYPE) \ { \ - target_flags &= ~MASK_PROTOTYPE; \ + TARGET_PROTOTYPE = 0; \ error (INVALID_64BIT, "prototype"); \ } \ if ((target_flags & MASK_POWERPC64) == 0) \ diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index 1845eda584a..fa215fcbc91 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -106,6 +106,8 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile) builtin_define ("_ARCH_PWR5"); if (TARGET_FPRND) builtin_define ("_ARCH_PWR5X"); + if (TARGET_CMPB) + builtin_define ("_ARCH_PWR6"); if (TARGET_MFPGPR) builtin_define ("_ARCH_PWR6X"); if (! TARGET_POWER && ! TARGET_POWER2 && ! TARGET_POWERPC) diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index ecedffd8fec..7a61d6c4b6f 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -1323,10 +1323,10 @@ rs6000_override_options (const char *default_cpu) | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND}, {"power6", PROCESSOR_POWER6, POWERPC_7400_MASK | MASK_POWERPC64 | MASK_MFCRF | MASK_POPCNTB - | MASK_FPRND}, + | MASK_FPRND | MASK_CMPB | MASK_DFP }, {"power6x", PROCESSOR_POWER6, POWERPC_7400_MASK | MASK_POWERPC64 | MASK_MFCRF | MASK_POPCNTB - | MASK_FPRND | MASK_MFPGPR}, + | MASK_FPRND | MASK_CMPB | MASK_MFPGPR | MASK_DFP }, {"powerpc", PROCESSOR_POWERPC, POWERPC_BASE_MASK}, {"powerpc64", PROCESSOR_POWERPC64, POWERPC_BASE_MASK | MASK_PPC_GFXOPT | MASK_POWERPC64}, @@ -1353,7 +1353,7 @@ rs6000_override_options (const char *default_cpu) POWERPC_MASKS = (POWERPC_BASE_MASK | MASK_PPC_GPOPT | MASK_STRICT_ALIGN | MASK_PPC_GFXOPT | MASK_POWERPC64 | MASK_ALTIVEC | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND | MASK_MULHW - | MASK_DLMZB | MASK_MFPGPR) + | MASK_DLMZB | MASK_CMPB | MASK_MFPGPR | MASK_DFP) }; rs6000_init_hard_regno_mode_ok (); diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index decaf8fae8f..386a7c1d359 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -164,6 +164,14 @@ #define TARGET_FPRND 0 #endif +/* Define TARGET_CMPB if the target assembler does not support the + cmpb instruction. */ + +#ifndef HAVE_AS_CMPB +#undef TARGET_CMPB +#define TARGET_CMPB 0 +#endif + /* Define TARGET_MFPGPR if the target assembler does not support the mffpr and mftgpr instructions. */ @@ -172,6 +180,13 @@ #define TARGET_MFPGPR 0 #endif +/* Define TARGET_DFP if the target assembler does not support decimal + floating point instructions. */ +#ifndef HAVE_AS_DFP +#undef TARGET_DFP +#define TARGET_DFP 0 +#endif + #ifndef TARGET_SECURE_PLT #define TARGET_SECURE_PLT 0 #endif diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt index bbf6235b8e3..f7091f50869 100644 --- a/gcc/config/rs6000/rs6000.opt +++ b/gcc/config/rs6000/rs6000.opt @@ -1,6 +1,6 @@ ; Options for the rs6000 port of the compiler ; -; Copyright (C) 2005 Free Software Foundation, Inc. +; Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. ; Contributed by Aldy Hernandez <aldy@quesejoda.com>. ; ; This file is part of GCC. @@ -64,6 +64,10 @@ mfprnd Target Report Mask(FPRND) Use PowerPC V2.02 floating point rounding instructions +mcmpb +Target Report Mask(CMPB) +Use PowerPC V2.05 compare bytes instruction + mmfpgpr Target Report Mask(MFPGPR) Use extended PowerPC V2.05 move floating point to/from GPR instructions @@ -72,6 +76,10 @@ maltivec Target Report Mask(ALTIVEC) Use AltiVec instructions +mdfp +Target Report Mask(DFP) +Use decimal floating point instructions + mmulhw Target Report Mask(MULHW) Use 4xx half-word multiply instructions diff --git a/gcc/config/rs6000/sysv4.opt b/gcc/config/rs6000/sysv4.opt index c483ea5e00a..bcdfd485586 100644 --- a/gcc/config/rs6000/sysv4.opt +++ b/gcc/config/rs6000/sysv4.opt @@ -75,7 +75,7 @@ Target RejectNegative no description yet mprototype -Target Mask(PROTOTYPE) +Target Var(TARGET_PROTOTYPE) Assume all variable arg functions are prototyped ;; FIXME: Does nothing. |