aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog19
-rw-r--r--gcc/config.in12
-rw-r--r--gcc/config/rs6000/linux64.h4
-rw-r--r--gcc/config/rs6000/rs6000-c.c2
-rw-r--r--gcc/config/rs6000/rs6000.c6
-rw-r--r--gcc/config/rs6000/rs6000.h15
-rw-r--r--gcc/config/rs6000/rs6000.opt10
-rw-r--r--gcc/config/rs6000/sysv4.opt2
-rwxr-xr-xgcc/configure290
-rw-r--r--gcc/configure.ac30
-rw-r--r--gcc/doc/invoke.texi15
11 files changed, 291 insertions, 114 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0be8ba5..40ab3ec 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,22 @@
+2007-02-20 Janis Johnson <janis187@us.ibm.com>
+
+ * 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.
+
2007-02-20 Steven Bosscher <steven@gcc.gnu.org>
* rtl.h (remove_reg_equal_equiv_notes): New prototype.
diff --git a/gcc/config.in b/gcc/config.in
index e1a530a..275327d 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -160,6 +160,18 @@
#endif
+/* Define if your assembler supports cmpb. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_AS_CMPB
+#endif
+
+
+/* Define if your assembler supports DFP instructions. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_AS_DFP
+#endif
+
+
/* Define if your assembler supports dwarf2 .file/.loc directives, and
preserves file table indices exactly as given. */
#ifndef USED_FOR_TARGET
diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
index 5b954a9..8937dcd 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 1845eda..fa215fc 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 ecedffd..7a61d6c 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 decaf8f..386a7c1 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 bbf6235..f7091f5 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 c483ea5..bcdfd48 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.
diff --git a/gcc/configure b/gcc/configure
index 77dfa40..a2abfcc 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -10559,9 +10559,19 @@ fi;
- lib_includedir=UNSET
- lib_libdir=UNSET
+ use_additional=yes
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
# Check whether --with-libiconv-prefix or --without-libiconv-prefix was given.
@@ -10569,8 +10579,7 @@ if test "${with_libiconv_prefix+set}" = set; then
withval="$with_libiconv_prefix"
if test "X$withval" = "Xno"; then
- lib_includedir="NONE"
- lib_libdir="NONE"
+ use_additional=no
else
if test "X$withval" = "X"; then
@@ -10579,36 +10588,19 @@ if test "${with_libiconv_prefix+set}" = set; then
acl_save_exec_prefix="$exec_prefix"
exec_prefix="$acl_final_exec_prefix"
- eval lib_includedir=\"$includedir\"
- eval lib_libdir=\"$libdir\"
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
exec_prefix="$acl_save_exec_prefix"
prefix="$acl_save_prefix"
else
- lib_includedir="$withval/include"
- lib_libdir="$withval/lib"
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/lib"
fi
fi
fi;
-
-
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
-
- test $lib_includedir = UNSET && eval lib_includedir=\"$includedir\"
- test $lib_libdir = UNSET && eval lib_libdir=\"$libdir\"
-
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-
-
-
-
-
LIBICONV=
LTLIBICONV=
INCICONV=
@@ -10645,19 +10637,19 @@ fi;
found_la=
found_so=
found_a=
- if test "$lib_libdir" != NONE; then
- if test -n "$shlibext" && test -f "$lib_libdir/lib$name.$shlibext"; then
- found_dir="$lib_libdir"
- found_so="$lib_libdir/lib$name.$shlibext"
- if test -f "$lib_libdir/lib$name.la"; then
- found_la="$lib_libdir/lib$name.la"
+ if test $use_additional = yes; then
+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
+ found_dir="$additional_libdir"
+ found_so="$additional_libdir/lib$name.$shlibext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
fi
else
- if test -f "$lib_libdir/lib$name.$libext"; then
- found_dir="$lib_libdir"
- found_a="$lib_libdir/lib$name.$libext"
- if test -f "$lib_libdir/lib$name.la"; then
- found_la="$lib_libdir/lib$name.la"
+ if test -f "$additional_libdir/lib$name.$libext"; then
+ found_dir="$additional_libdir"
+ found_a="$additional_libdir/lib$name.$libext"
+ if test -f "$additional_libdir/lib$name.la"; then
+ found_la="$additional_libdir/lib$name.la"
fi
fi
fi
@@ -10766,11 +10758,6 @@ fi;
fi
additional_includedir=
case "$found_dir" in
- "$lib_libdir")
- if test "$lib_includedir" != NONE; then
- additional_includedir="$lib_includedir"
- fi
- ;;
*/lib | */lib/)
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
additional_includedir="$basedir/include"
@@ -10955,7 +10942,6 @@ fi;
-
am_save_CPPFLAGS="$CPPFLAGS"
for element in $INCICONV; do
@@ -15602,6 +15588,98 @@ LCF0:
addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
esac
+ case $target in
+ *-*-aix*) conftest_s=' .machine "pwr6"
+ .csect .text[PR]
+ cmpb 3,4,5';;
+ *) conftest_s=' .machine power6
+ .text
+ cmpb 3,4,5';;
+ esac
+
+ echo "$as_me:$LINENO: checking assembler for compare bytes support" >&5
+echo $ECHO_N "checking assembler for compare bytes support... $ECHO_C" >&6
+if test "${gcc_cv_as_powerpc_cmpb+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ gcc_cv_as_powerpc_cmpb=no
+ if test $in_tree_gas = yes; then
+ if test $gcc_cv_gas_vers -ge `expr \( \( 9 \* 1000 \) + 99 \) \* 1000 + 0`
+ then gcc_cv_as_powerpc_cmpb=yes
+fi
+ elif test x$gcc_cv_as != x; then
+ echo "$conftest_s" > conftest.s
+ if { ac_try='$gcc_cv_as -a32 -o conftest.o conftest.s >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }
+ then
+ gcc_cv_as_powerpc_cmpb=yes
+ else
+ echo "configure: failed program was" >&5
+ cat conftest.s >&5
+ fi
+ rm -f conftest.o conftest.s
+ fi
+fi
+echo "$as_me:$LINENO: result: $gcc_cv_as_powerpc_cmpb" >&5
+echo "${ECHO_T}$gcc_cv_as_powerpc_cmpb" >&6
+if test $gcc_cv_as_powerpc_cmpb = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_AS_CMPB 1
+_ACEOF
+
+fi
+
+ case $target in
+ *-*-aix*) conftest_s=' .machine "pwr6"
+ .csect .text[PR]
+ dadd 1,3';;
+ *) conftest_s=' .machine power6
+ .text
+ dadd 1,3';;
+ esac
+
+ echo "$as_me:$LINENO: checking assembler for decimal float support" >&5
+echo $ECHO_N "checking assembler for decimal float support... $ECHO_C" >&6
+if test "${gcc_cv_as_powerpc_dfp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ gcc_cv_as_powerpc_dfp=no
+ if test $in_tree_gas = yes; then
+ if test $gcc_cv_gas_vers -ge `expr \( \( 9 \* 1000 \) + 99 \) \* 1000 + 0`
+ then gcc_cv_as_powerpc_dfp=yes
+fi
+ elif test x$gcc_cv_as != x; then
+ echo "$conftest_s" > conftest.s
+ if { ac_try='$gcc_cv_as -a32 -o conftest.o conftest.s >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }
+ then
+ gcc_cv_as_powerpc_dfp=yes
+ else
+ echo "configure: failed program was" >&5
+ cat conftest.s >&5
+ fi
+ rm -f conftest.o conftest.s
+ fi
+fi
+echo "$as_me:$LINENO: result: $gcc_cv_as_powerpc_dfp" >&5
+echo "${ECHO_T}$gcc_cv_as_powerpc_dfp" >&6
+if test $gcc_cv_as_powerpc_dfp = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_AS_DFP 1
+_ACEOF
+
+fi
+
echo "$as_me:$LINENO: checking assembler for rel16 relocs" >&5
echo $ECHO_N "checking assembler for rel16 relocs... $ECHO_C" >&6
if test "${gcc_cv_as_powerpc_rel16+set}" = set; then
@@ -16014,70 +16092,70 @@ echo "${ECHO_T}$gcc_cv_ld_pie" >&6
echo "$as_me:$LINENO: checking linker EH-compatible garbage collection of sections" >&5
echo $ECHO_N "checking linker EH-compatible garbage collection of sections... $ECHO_C" >&6
gcc_cv_ld_eh_gc_sections=no
-#if test $in_tree_ld = yes ; then
-# if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 17 -o "$gcc_cv_gld_major_version" -gt 2 \
-# && test $in_tree_ld_is_elf = yes; then
-# gcc_cv_ld_eh_gc_sections=yes
-# fi
-#elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
-# cat > conftest.s <<EOF
-# .section .text
-#.globl _start
-# .type _start, @function
-#_start:
-# .long foo
-# .size _start, .-_start
-# .section .text.foo,"ax",@progbits
-# .type foo, @function
-#foo:
-# .long 0
-# .size foo, .-foo
-# .section .gcc_except_table.foo,"a",@progbits
-#.L0:
-# .long 0
-# .section .eh_frame,"a",@progbits
-# .long .L0
-#EOF
-# if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
-# if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
-# | grep "gc-sections option ignored" > /dev/null; then
-# gcc_cv_ld_eh_gc_sections=no
-# elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
-# gcc_cv_ld_eh_gc_sections=yes
-# # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
-# if test x$gcc_cv_as_comdat_group != xyes; then
-# gcc_cv_ld_eh_gc_sections=no
-# cat > conftest.s <<EOF
-# .section .text
-#.globl _start
-# .type _start, @function
-#_start:
-# .long foo
-# .size _start, .-_start
-# .section .gnu.linkonce.t.foo,"ax",@progbits
-# .type foo, @function
-#foo:
-# .long 0
-# .size foo, .-foo
-# .section .gcc_except_table.foo,"a",@progbits
-#.L0:
-# .long 0
-# .section .eh_frame,"a",@progbits
-# .long .L0
-#EOF
-# if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
-# if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
-# | grep "gc-sections option ignored" > /dev/null; then
-# gcc_cv_ld_eh_gc_sections=no
-# elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
-# gcc_cv_ld_eh_gc_sections=yes
-# fi
-# fi
-# fi
-# fi
-# fi
-# rm -f conftest.s conftest.o conftest
-#fi
+if test $in_tree_ld = yes ; then
+ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 17 -o "$gcc_cv_gld_major_version" -gt 2 \
+ && test $in_tree_ld_is_elf = yes; then
+ gcc_cv_ld_eh_gc_sections=yes
+ fi
+elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x -a x$gcc_cv_objdump != x ; then
+ cat > conftest.s <<EOF
+ .section .text
+.globl _start
+ .type _start, @function
+_start:
+ .long foo
+ .size _start, .-_start
+ .section .text.foo,"ax",@progbits
+ .type foo, @function
+foo:
+ .long 0
+ .size foo, .-foo
+ .section .gcc_except_table.foo,"a",@progbits
+.L0:
+ .long 0
+ .section .eh_frame,"a",@progbits
+ .long .L0
+EOF
+ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
+ if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
+ | grep "gc-sections option ignored" > /dev/null; then
+ gcc_cv_ld_eh_gc_sections=no
+ elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
+ gcc_cv_ld_eh_gc_sections=yes
+ # If no COMDAT groups, the compiler will emit .gnu.linkonce.t. sections.
+ if test x$gcc_cv_as_comdat_group != xyes; then
+ gcc_cv_ld_eh_gc_sections=no
+ cat > conftest.s <<EOF
+ .section .text
+.globl _start
+ .type _start, @function
+_start:
+ .long foo
+ .size _start, .-_start
+ .section .gnu.linkonce.t.foo,"ax",@progbits
+ .type foo, @function
+foo:
+ .long 0
+ .size foo, .-foo
+ .section .gcc_except_table.foo,"a",@progbits
+.L0:
+ .long 0
+ .section .eh_frame,"a",@progbits
+ .long .L0
+EOF
+ if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1; then
+ if $gcc_cv_ld -o conftest conftest.o --entry=_start --gc-sections 2>&1 \
+ | grep "gc-sections option ignored" > /dev/null; then
+ gcc_cv_ld_eh_gc_sections=no
+ elif $gcc_cv_objdump -h conftest | grep gcc_except_table > /dev/null; then
+ gcc_cv_ld_eh_gc_sections=yes
+ fi
+ fi
+ fi
+ fi
+ fi
+ rm -f conftest.s conftest.o conftest
+fi
case "$target" in
hppa*-*-linux*)
# ??? This apparently exposes a binutils bug with PC-relative relocations.
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 15be971..db9a0c3d 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -2925,6 +2925,36 @@ LCF0:
addis 11,30,_GLOBAL_OFFSET_TABLE_-.LCF0@ha';;
esac
+ case $target in
+ *-*-aix*) conftest_s=' .machine "pwr6"
+ .csect .text[[PR]]
+ cmpb 3,4,5';;
+ *) conftest_s=' .machine power6
+ .text
+ cmpb 3,4,5';;
+ esac
+
+ gcc_GAS_CHECK_FEATURE([compare bytes support],
+ gcc_cv_as_powerpc_cmpb, [9,99,0], -a32,
+ [$conftest_s],,
+ [AC_DEFINE(HAVE_AS_CMPB, 1,
+ [Define if your assembler supports cmpb.])])
+
+ case $target in
+ *-*-aix*) conftest_s=' .machine "pwr6"
+ .csect .text[[PR]]
+ dadd 1,3';;
+ *) conftest_s=' .machine power6
+ .text
+ dadd 1,3';;
+ esac
+
+ gcc_GAS_CHECK_FEATURE([decimal float support],
+ gcc_cv_as_powerpc_dfp, [9,99,0], -a32,
+ [$conftest_s],,
+ [AC_DEFINE(HAVE_AS_DFP, 1,
+ [Define if your assembler supports DFP instructions.])])
+
gcc_GAS_CHECK_FEATURE([rel16 relocs],
gcc_cv_as_powerpc_rel16, [2,17,0], -a32,
[$conftest_s],,
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index ad6f90e..a6bcd72 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -664,7 +664,7 @@ See RS/6000 and PowerPC Options.
-mpowerpc-gpopt -mno-powerpc-gpopt @gol
-mpowerpc-gfxopt -mno-powerpc-gfxopt @gol
-mmfcrf -mno-mfcrf -mpopcntb -mno-popcntb -mfprnd -mno-fprnd @gol
--mmfpgpr -mno-mfpgpr @gol
+-mcmpb -mno-cmpb -mmfpgpr -mno-mfpgpr -mdfp -mno-dfp @gol
-mnew-mnemonics -mold-mnemonics @gol
-mfull-toc -mminimal-toc -mno-fp-in-toc -mno-sum-in-toc @gol
-m64 -m32 -mxl-compat -mno-xl-compat -mpe @gol
@@ -11799,8 +11799,12 @@ These @samp{-m} options are defined for the IBM RS/6000 and PowerPC:
@itemx -mno-popcntb
@itemx -mfprnd
@itemx -mno-fprnd
+@itemx -mcmpb
+@itemx -mno-cmpb
@itemx -mmfpgpr
@itemx -mno-mfpgpr
+@itemx -mdfp
+@itemx -mno-dfp
@opindex mpower
@opindex mno-power
@opindex mpower2
@@ -11819,8 +11823,12 @@ These @samp{-m} options are defined for the IBM RS/6000 and PowerPC:
@opindex mno-popcntb
@opindex mfprnd
@opindex mno-fprnd
+@opindex mcmpb
+@opindex mno-cmpb
@opindex mmfpgpr
@opindex mno-mfpgpr
+@opindex mdfp
+@opindex mno-dfp
GCC supports two related instruction set architectures for the
RS/6000 and PowerPC@. The @dfn{POWER} instruction set are those
instructions supported by the @samp{rios} chip set used in the original
@@ -11865,10 +11873,15 @@ architecture.
The @option{-mfprnd} option allows GCC to generate the FP round to
integer instructions implemented on the POWER5+ processor and other
processors that support the PowerPC V2.03 architecture.
+The @option{-mcmpb} option allows GCC to generate the compare bytes
+instruction implemented on the POWER6 processor and other processors
+that support the PowerPC V2.05 architecture.
The @option{-mmfpgpr} option allows GCC to generate the FP move to/from
general purpose register instructions implemented on the POWER6X
processor and other processors that support the extended PowerPC V2.05
architecture.
+The @option{-mdfp} option allows GCC to generate the decimal floating
+point instructions implemented on some POWER processors.
The @option{-mpowerpc64} option allows GCC to generate the additional
64-bit instructions that are found in the full PowerPC64 architecture