From 3a1af93034f967f91b4f9a56987603cf6b4f360f Mon Sep 17 00:00:00 2001 From: ebotcazou Date: Wed, 9 Aug 2006 16:38:45 +0000 Subject: [PATCH] * config/rs6000/rs6000.c (print_operand) : Fix comment and adjust. (rs6000_generate_compare): Tweak comments. * config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Fix comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116041 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 15 ++++++++------- gcc/config/rs6000/rs6000.md | 2 +- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b0119e11d12..c6d24ddb57d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2006-08-09 Eric Botcazou + + * config/rs6000/rs6000.c (print_operand) : Fix comment and adjust. + (rs6000_generate_compare): Tweak comments. + * config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Fix comment. + 2006-08-09 Alexandre Oliva * var-tracking.c (enum micro_operation_type): Add MO_COPY. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 676f9645265..47734a41866 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -10283,13 +10283,14 @@ print_operand (FILE *file, rtx x, int code) return; case 'D': - /* Like 'J' but get to the EQ bit. */ + /* Like 'J' but get to the GT bit only. */ gcc_assert (GET_CODE (x) == REG); - /* Bit 1 is EQ bit. */ - i = 4 * (REGNO (x) - CR0_REGNO) + 2; + /* Bit 1 is GT bit. */ + i = 4 * (REGNO (x) - CR0_REGNO) + 1; - fprintf (file, "%d", i); + /* Add one for shift count in rlinm for scc. */ + fprintf (file, "%d", i + 1); return; case 'E': @@ -11086,7 +11087,7 @@ rs6000_generate_compare (enum rtx_code code) /* First, the compare. */ compare_result = gen_reg_rtx (comp_mode); - /* SPE FP compare instructions on the GPRs. Yuck! */ + /* E500 FP compare instructions on the GPRs. Yuck! */ if ((TARGET_E500 && !TARGET_FPRS && TARGET_HARD_FLOAT) && rs6000_compare_fp_p) { @@ -11096,8 +11097,8 @@ rs6000_generate_compare (enum rtx_code code) if (op_mode == VOIDmode) op_mode = GET_MODE (rs6000_compare_op1); - /* Note: The E500 comparison instructions set the GT bit (x + - 1), on success. This explains the mess. */ + /* The E500 FP compare instructions toggle the GT bit (CR bit 1) only. + This explains the following mess. */ switch (code) { diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index 611d9e162bf..92590a70db5 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -55,7 +55,7 @@ (UNSPEC_TLSGOTTPREL 28) (UNSPEC_TLSTLS 29) (UNSPEC_FIX_TRUNC_TF 30) ; fadd, rounding towards zero - (UNSPEC_MV_CR_GT 31) ; move_from_CR_eq_bit + (UNSPEC_MV_CR_GT 31) ; move_from_CR_gt_bit (UNSPEC_STFIWX 32) (UNSPEC_POPCNTB 33) (UNSPEC_FRES 34) -- 2.11.0