OSDN Git Service

* config/rs6000/rs6000.c (print_operand) <D>: Fix comment and adjust.
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Aug 2006 16:38:45 +0000 (16:38 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 9 Aug 2006 16:38:45 +0000 (16:38 +0000)
(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
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.md

index b0119e1..c6d24dd 100644 (file)
@@ -1,3 +1,9 @@
+2006-08-09  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/rs6000/rs6000.c (print_operand) <D>: Fix comment and adjust.
+       (rs6000_generate_compare): Tweak comments.
+       * config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Fix comment.
+
 2006-08-09  Alexandre Oliva  <aoliva@redhat.com>
 
        * var-tracking.c (enum micro_operation_type): Add MO_COPY.
index 676f964..47734a4 100644 (file)
@@ -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)
        {
index 611d9e1..92590a7 100644 (file)
@@ -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)