Commit fef98bf2 by Aldy Hernandez Committed by Aldy Hernandez

rs6000.md: Document why a pattern is not available.

	* config/rs6000/rs6000.md: Document why a pattern is not
	available.

	* config/rs6000/rs6000.c (rs6000_emit_cmove): Disable comparisons
	of floats on the E500.
	(branch_positive_comparison_operator): Do not allow NE even on the
	E500.

From-SVN: r80617
parent 034776f6
2004-04-11 Aldy Hernandez <aldyh@redhat.com> 2004-04-11 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/rs6000.md: Document why a pattern is not
available.
* config/rs6000/rs6000.c (rs6000_emit_cmove): Disable comparisons
of floats on the E500.
(branch_positive_comparison_operator): Do not allow NE even on the
E500.
2004-04-11 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/rs6000.c (rs6000_assemble_integer): Change * config/rs6000/rs6000.c (rs6000_assemble_integer): Change
in_text_unlikely_section to in_unlikely_text_section. in_text_unlikely_section to in_unlikely_text_section.
......
...@@ -8376,7 +8376,6 @@ branch_positive_comparison_operator (rtx op, enum machine_mode mode) ...@@ -8376,7 +8376,6 @@ branch_positive_comparison_operator (rtx op, enum machine_mode mode)
code = GET_CODE (op); code = GET_CODE (op);
return (code == EQ || code == LT || code == GT return (code == EQ || code == LT || code == GT
|| (TARGET_E500 && TARGET_HARD_FLOAT && !TARGET_FPRS && code == NE)
|| code == LTU || code == GTU || code == LTU || code == GTU
|| code == UNORDERED); || code == UNORDERED);
} }
...@@ -10195,6 +10194,9 @@ rs6000_emit_cmove (rtx dest, rtx op, rtx true_cond, rtx false_cond) ...@@ -10195,6 +10194,9 @@ 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 rs6000_emit_int_cmove (dest, op, true_cond, false_cond);
return 0; return 0;
} }
else if (TARGET_E500 && TARGET_HARD_FLOAT && !TARGET_FPRS
&& GET_MODE_CLASS (compare_mode) == MODE_FLOAT)
return 0;
/* Eliminate half of the comparisons by switching operands, this /* Eliminate half of the comparisons by switching operands, this
makes the remaining code simpler. */ makes the remaining code simpler. */
......
...@@ -13666,6 +13666,8 @@ ...@@ -13666,6 +13666,8 @@
"cc_reg_operand" "0,y") "cc_reg_operand" "0,y")
(const_int 0)]) (const_int 0)])
(const_int 0)))] (const_int 0)))]
;; This pattern is not available to SPE because the CR bits on an FP
;; compare are different than traditional PPC.
"!TARGET_SPE" "!TARGET_SPE"
"{crnor %E0,%j1,%j1|crnot %E0,%j1}" "{crnor %E0,%j1,%j1|crnot %E0,%j1}"
[(set_attr "type" "cr_logical,delayed_cr")]) [(set_attr "type" "cr_logical,delayed_cr")])
......
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