OSDN Git Service

* doc/invoke.texi (RS/6000 and PowerPC Options): Add -mcmpb and -mdfp.
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Feb 2007 23:11:43 +0000 (23:11 +0000)
committerjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 Feb 2007 23:11:43 +0000 (23:11 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122179 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config.in
gcc/config/rs6000/linux64.h
gcc/config/rs6000/rs6000-c.c
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/config/rs6000/rs6000.opt
gcc/config/rs6000/sysv4.opt
gcc/configure
gcc/configure.ac
gcc/doc/invoke.texi

index 0be8ba5..40ab3ec 100644 (file)
@@ -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.
index e1a530a..275327d 100644 (file)
 #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
index 5b954a9..8937dcd 100644 (file)
@@ -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)             \
index 1845eda..fa215fc 100644 (file)
@@ -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)
index ecedffd..7a61d6c 100644 (file)
@@ -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 ();
index decaf8f..386a7c1 100644 (file)
 #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. */
 
 #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
index bbf6235..f7091f5 100644 (file)
@@ -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
index c483ea5..bcdfd48 100644 (file)
@@ -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.
index 77dfa40..a2abfcc 100755 (executable)
@@ -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.
index 15be971..db9a0c3 100644 (file)
@@ -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],,
index ad6f90e..a6bcd72 100644 (file)
@@ -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