From: Joseph Myers Date: Tue, 2 Jan 2007 13:03:59 +0000 (+0000) Subject: rs6000.c (print_operand): Check (TARGET_SPE || TARGET_E500_DOUBLE), not TARGET_E500... X-Git-Tag: releases/gcc-4.3.0~7761 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ef65e3da89bad9551d9ee157750ca7fa783ef6f;p=thirdparty%2Fgcc.git rs6000.c (print_operand): Check (TARGET_SPE || TARGET_E500_DOUBLE), not TARGET_E500, for %y. * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE || TARGET_E500_DOUBLE), not TARGET_E500, for %y. (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch, rs6000_emit_cmove): Don't check TARGET_E500. * config/rs6000/rs6000.md (bunordered, bordered, sunordered, sordered): Don't check TARGET_E500. From-SVN: r120339 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f178159b4634..6dcf8ad7e618 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2007-01-02 Joseph Myers + + * config/rs6000/rs6000.c (print_operand): Check (TARGET_SPE || + TARGET_E500_DOUBLE), not TARGET_E500, for %y. + (rs6000_generate_compare, rs6000_emit_sCOND, output_cbranch, + rs6000_emit_cmove): Don't check TARGET_E500. + * config/rs6000/rs6000.md (bunordered, bordered, sunordered, + sordered): Don't check TARGET_E500. + 2007-01-01 Eric Christopher * config/mips/mips.c (mips_regno_mode_ok_for_base_p): Use diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 3d4b19c4756f..740197013f47 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -1,6 +1,6 @@ /* Subroutines used for code generation on IBM RS/6000. Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004, 2005, 2006 + 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) @@ -11016,7 +11016,8 @@ print_operand (FILE *file, rtx x, int code) tmp = XEXP (x, 0); /* Ugly hack because %y is overloaded. */ - if (TARGET_E500 && GET_MODE_SIZE (GET_MODE (x)) == 8) + if ((TARGET_SPE || TARGET_E500_DOUBLE) + && GET_MODE_SIZE (GET_MODE (x)) == 8) { /* Handle [reg]. */ if (GET_CODE (tmp) == REG) @@ -11315,7 +11316,7 @@ rs6000_generate_compare (enum rtx_code code) compare_result = gen_reg_rtx (comp_mode); /* E500 FP compare instructions on the GPRs. Yuck! */ - if ((TARGET_E500 && !TARGET_FPRS && TARGET_HARD_FLOAT) + if ((!TARGET_FPRS && TARGET_HARD_FLOAT) && rs6000_compare_fp_p) { rtx cmp, or_result, compare_result2; @@ -11508,7 +11509,7 @@ rs6000_generate_compare (enum rtx_code code) under flag_finite_math_only we don't bother. */ if (rs6000_compare_fp_p && !flag_finite_math_only - && !(TARGET_HARD_FLOAT && TARGET_E500 && !TARGET_FPRS) + && !(TARGET_HARD_FLOAT && !TARGET_FPRS) && (code == LE || code == GE || code == UNEQ || code == LTGT || code == UNGT || code == UNLT)) @@ -11558,7 +11559,7 @@ rs6000_emit_sCOND (enum rtx_code code, rtx result) condition_rtx = rs6000_generate_compare (code); cond_code = GET_CODE (condition_rtx); - if (TARGET_E500 && rs6000_compare_fp_p + if (rs6000_compare_fp_p && !TARGET_FPRS && TARGET_HARD_FLOAT) { rtx t; @@ -11665,7 +11666,7 @@ output_cbranch (rtx op, const char *label, int reversed, rtx insn) code = reverse_condition (code); } - if ((TARGET_E500 && !TARGET_FPRS && TARGET_HARD_FLOAT) && mode == CCFPmode) + if ((!TARGET_FPRS && TARGET_HARD_FLOAT) && mode == CCFPmode) { /* The efscmp/tst* instructions twiddle bit 2, which maps nicely to the GT bit. */ @@ -12081,7 +12082,7 @@ rs6000_emit_cmove (rtx dest, rtx op, rtx true_cond, rtx false_cond) return rs6000_emit_int_cmove (dest, op, true_cond, false_cond); return 0; } - else if (TARGET_E500 && TARGET_HARD_FLOAT && !TARGET_FPRS + else if (TARGET_HARD_FLOAT && !TARGET_FPRS && SCALAR_FLOAT_MODE_P (compare_mode)) return 0; diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index a4902c4e561e..14b73c213a8c 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -1,6 +1,6 @@ ;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler ;; Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, -;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +;; 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 ;; Free Software Foundation, Inc. ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu) @@ -11421,12 +11421,12 @@ (define_expand "bunordered" [(use (match_operand 0 "" ""))] - "! (TARGET_HARD_FLOAT && TARGET_E500 && !TARGET_FPRS)" + "! (TARGET_HARD_FLOAT && !TARGET_FPRS)" "{ rs6000_emit_cbranch (UNORDERED, operands[0]); DONE; }") (define_expand "bordered" [(use (match_operand 0 "" ""))] - "! (TARGET_HARD_FLOAT && TARGET_E500 && !TARGET_FPRS)" + "! (TARGET_HARD_FLOAT && !TARGET_FPRS)" "{ rs6000_emit_cbranch (ORDERED, operands[0]); DONE; }") (define_expand "buneq" @@ -11555,12 +11555,12 @@ (define_expand "sunordered" [(clobber (match_operand:SI 0 "gpc_reg_operand" ""))] - "! (TARGET_HARD_FLOAT && TARGET_E500 && !TARGET_FPRS)" + "! (TARGET_HARD_FLOAT && !TARGET_FPRS)" "{ rs6000_emit_sCOND (UNORDERED, operands[0]); DONE; }") (define_expand "sordered" [(clobber (match_operand:SI 0 "gpc_reg_operand" ""))] - "! (TARGET_HARD_FLOAT && TARGET_E500 && !TARGET_FPRS)" + "! (TARGET_HARD_FLOAT && !TARGET_FPRS)" "{ rs6000_emit_sCOND (ORDERED, operands[0]); DONE; }") (define_expand "suneq"