summaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorcrux <crux@138bc75d-0d04-0410-961f-82ee72b054a4>1999-08-23 16:09:52 +0000
committercrux <crux@138bc75d-0d04-0410-961f-82ee72b054a4>1999-08-23 16:09:52 +0000
commit6f71c48df4825561cbc2b1b302361e572dd95f33 (patch)
treec7aa79cb5a8ac00d2be7a8f82e08df44d2c5a819 /gcc/config
parenta6eb3a576581a8c8497f7788e31f1a1b67c3fa19 (diff)
downloadgcc-6f71c48df4825561cbc2b1b302361e572dd95f33.tar.gz
Fix sparc compilation failure
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28807 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/sparc/sparc.h5
-rw-r--r--gcc/config/sparc/sparc.md82
2 files changed, 10 insertions, 77 deletions
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index 7fafc4dc4c6..82e3727c8c5 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -2676,6 +2676,11 @@ do { \
/* This is meant to be redefined in the host dependent files */
#define INIT_SUBTARGET_OPTABS
+/* Nonzero if a floating point comparison library call for
+ mode MODE that will return a boolean value. Zero if one
+ of the libgcc2 functions is used. */
+#define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) ((MODE) == TFmode)
+
/* Compute the cost of computing a constant rtl expression RTX
whose rtx-code is CODE. The body of this macro is a portion
of a switch statement. If the code is computed here,
diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md
index e8390961dca..eff6b2939ad 100644
--- a/gcc/config/sparc/sparc.md
+++ b/gcc/config/sparc/sparc.md
@@ -606,7 +606,7 @@
[(set (reg:CCFP 96)
(compare:CCFP (match_operand:TF 0 "register_operand" "")
(match_operand:TF 1 "register_operand" "")))]
- "TARGET_FPU"
+ "TARGET_FPU && TARGET_HARD_QUAD"
"
{
sparc_compare_op0 = operands[0];
@@ -834,12 +834,6 @@
emit_insn (pat);
DONE;
}
- else if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, EQ);
- emit_insn (gen_sne (operands[0]));
- DONE;
- }
else if (TARGET_V9)
{
if (gen_v9_scc (EQ, operands))
@@ -887,12 +881,6 @@
emit_insn (pat);
DONE;
}
- else if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, NE);
- emit_insn (gen_sne (operands[0]));
- DONE;
- }
else if (TARGET_V9)
{
if (gen_v9_scc (NE, operands))
@@ -908,13 +896,7 @@
"! TARGET_LIVE_G0"
"
{
- if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, GT);
- emit_insn (gen_sne (operands[0]));
- DONE;
- }
- else if (TARGET_V9)
+ if (TARGET_V9)
{
if (gen_v9_scc (GT, operands))
DONE;
@@ -929,13 +911,7 @@
"! TARGET_LIVE_G0"
"
{
- if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, LT);
- emit_insn (gen_sne (operands[0]));
- DONE;
- }
- else if (TARGET_V9)
+ if (TARGET_V9)
{
if (gen_v9_scc (LT, operands))
DONE;
@@ -950,13 +926,7 @@
"! TARGET_LIVE_G0"
"
{
- if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, GE);
- emit_insn (gen_sne (operands[0]));
- DONE;
- }
- else if (TARGET_V9)
+ if (TARGET_V9)
{
if (gen_v9_scc (GE, operands))
DONE;
@@ -971,13 +941,7 @@
"! TARGET_LIVE_G0"
"
{
- if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, LE);
- emit_insn (gen_sne (operands[0]));
- DONE;
- }
- else if (TARGET_V9)
+ if (TARGET_V9)
{
if (gen_v9_scc (LE, operands))
DONE;
@@ -1605,12 +1569,6 @@
emit_v9_brxx_insn (EQ, sparc_compare_op0, operands[0]);
DONE;
}
- else if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, EQ);
- emit_jump_insn (gen_bne (operands[0]));
- DONE;
- }
operands[1] = gen_compare_reg (EQ, sparc_compare_op0, sparc_compare_op1);
}")
@@ -1629,12 +1587,6 @@
emit_v9_brxx_insn (NE, sparc_compare_op0, operands[0]);
DONE;
}
- else if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, NE);
- emit_jump_insn (gen_bne (operands[0]));
- DONE;
- }
operands[1] = gen_compare_reg (NE, sparc_compare_op0, sparc_compare_op1);
}")
@@ -1653,12 +1605,6 @@
emit_v9_brxx_insn (GT, sparc_compare_op0, operands[0]);
DONE;
}
- else if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, GT);
- emit_jump_insn (gen_bne (operands[0]));
- DONE;
- }
operands[1] = gen_compare_reg (GT, sparc_compare_op0, sparc_compare_op1);
}")
@@ -1687,12 +1633,6 @@
emit_v9_brxx_insn (LT, sparc_compare_op0, operands[0]);
DONE;
}
- else if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, LT);
- emit_jump_insn (gen_bne (operands[0]));
- DONE;
- }
operands[1] = gen_compare_reg (LT, sparc_compare_op0, sparc_compare_op1);
}")
@@ -1721,12 +1661,6 @@
emit_v9_brxx_insn (GE, sparc_compare_op0, operands[0]);
DONE;
}
- else if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, GE);
- emit_jump_insn (gen_bne (operands[0]));
- DONE;
- }
operands[1] = gen_compare_reg (GE, sparc_compare_op0, sparc_compare_op1);
}")
@@ -1755,12 +1689,6 @@
emit_v9_brxx_insn (LE, sparc_compare_op0, operands[0]);
DONE;
}
- else if (GET_MODE (sparc_compare_op0) == TFmode && ! TARGET_HARD_QUAD)
- {
- emit_float_lib_cmp (sparc_compare_op0, sparc_compare_op1, LE);
- emit_jump_insn (gen_bne (operands[0]));
- DONE;
- }
operands[1] = gen_compare_reg (LE, sparc_compare_op0, sparc_compare_op1);
}")