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
This commit is contained in:
parent
7cd689bcf0
commit
b639c3c245
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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) \
|
||||
|
@ -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)
|
||||
|
@ -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 ();
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
290
gcc/configure
vendored
290
gcc/configure
vendored
@ -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.
|
||||
|
@ -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],,
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user