summaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-09 16:38:45 +0000
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-09 16:38:45 +0000
commit3a1af93034f967f91b4f9a56987603cf6b4f360f (patch)
treecbfcedff7be2fe615e69736cecd53aaf551a0dd8 /gcc/config
parent54a5ecb6b046485a8b1f476cf957f6320a42c59c (diff)
downloadgcc-3a1af93034f967f91b4f9a56987603cf6b4f360f.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116041 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/rs6000/rs6000.c15
-rw-r--r--gcc/config/rs6000/rs6000.md2
2 files changed, 9 insertions, 8 deletions
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)