Commit cef6b86c by Eric Botcazou Committed by Eric Botcazou

rs6000.c (print_operand): Fix comment and adjust.

	* 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.

From-SVN: r116041
parent 9e7ef3a8
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> 2006-08-09 Alexandre Oliva <aoliva@redhat.com>
* var-tracking.c (enum micro_operation_type): Add MO_COPY. * var-tracking.c (enum micro_operation_type): Add MO_COPY.
......
...@@ -10283,13 +10283,14 @@ print_operand (FILE *file, rtx x, int code) ...@@ -10283,13 +10283,14 @@ print_operand (FILE *file, rtx x, int code)
return; return;
case 'D': 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); gcc_assert (GET_CODE (x) == REG);
/* Bit 1 is EQ bit. */ /* Bit 1 is GT bit. */
i = 4 * (REGNO (x) - CR0_REGNO) + 2; 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; return;
case 'E': case 'E':
...@@ -11086,7 +11087,7 @@ rs6000_generate_compare (enum rtx_code code) ...@@ -11086,7 +11087,7 @@ rs6000_generate_compare (enum rtx_code code)
/* First, the compare. */ /* First, the compare. */
compare_result = gen_reg_rtx (comp_mode); 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) if ((TARGET_E500 && !TARGET_FPRS && TARGET_HARD_FLOAT)
&& rs6000_compare_fp_p) && rs6000_compare_fp_p)
{ {
...@@ -11096,8 +11097,8 @@ rs6000_generate_compare (enum rtx_code code) ...@@ -11096,8 +11097,8 @@ rs6000_generate_compare (enum rtx_code code)
if (op_mode == VOIDmode) if (op_mode == VOIDmode)
op_mode = GET_MODE (rs6000_compare_op1); op_mode = GET_MODE (rs6000_compare_op1);
/* Note: The E500 comparison instructions set the GT bit (x + /* The E500 FP compare instructions toggle the GT bit (CR bit 1) only.
1), on success. This explains the mess. */ This explains the following mess. */
switch (code) switch (code)
{ {
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
(UNSPEC_TLSGOTTPREL 28) (UNSPEC_TLSGOTTPREL 28)
(UNSPEC_TLSTLS 29) (UNSPEC_TLSTLS 29)
(UNSPEC_FIX_TRUNC_TF 30) ; fadd, rounding towards zero (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_STFIWX 32)
(UNSPEC_POPCNTB 33) (UNSPEC_POPCNTB 33)
(UNSPEC_FRES 34) (UNSPEC_FRES 34)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment