aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorVictor Kaplansky <victork@il.ibm.com>2008-09-02 12:38:32 +0000
committerVictor Kaplansky <victork@gcc.gnu.org>2008-09-02 12:38:32 +0000
commitf6d5e84ac30dcd99c69a8fd84cb59fb36fc18ac6 (patch)
tree9dcf28a6d85b7ef950c6ad978ee8c31acc13a927 /gcc/config
parent1aeaf0f764b0be261e12be19f8b73977440994cb (diff)
downloadgcc-f6d5e84ac30dcd99c69a8fd84cb59fb36fc18ac6.zip
gcc-f6d5e84ac30dcd99c69a8fd84cb59fb36fc18ac6.tar.gz
gcc-f6d5e84ac30dcd99c69a8fd84cb59fb36fc18ac6.tar.bz2
spu.md (divdf3): Removed.
2008-09-02 Victor Kaplansky <victork@il.ibm.com> * gcc/config/spu/spu.md (divdf3): Removed. Testsuite Changelog: * gcc.dg/fastmath-2.c: New. From-SVN: r139888
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/spu/spu.md52
1 files changed, 0 insertions, 52 deletions
diff --git a/gcc/config/spu/spu.md b/gcc/config/spu/spu.md
index 89f2109..7b4b743 100644
--- a/gcc/config/spu/spu.md
+++ b/gcc/config/spu/spu.md
@@ -1864,58 +1864,6 @@
DONE;
})
-;; Taken from STI's gcc
-;; Does not correctly handle INF or NAN.
-(define_expand "divdf3"
- [(set (match_operand:DF 0 "register_operand" "=r")
- (div:DF (match_operand:DF 1 "register_operand" "r")
- (match_operand:DF 2 "register_operand" "r")))]
- "flag_finite_math_only"
- "{
- /*
- double
- divdf3 (double x, double y)
- {
- float x0;
- float y_f = (float) y;
- double x1, x2;
-
- x0 = spu_extract(spu_re(spu_promote(y_f, 0)), 0);
- x1 = (double)(x0 * (2.0f - y_f * x0));
- x2 = x1 * (2.0 - y * x1);
- return (x * x2 * (2.0 - y * x2));
- }
- */
-
- rtx dst = operands[0];
- rtx x = operands[1];
- rtx y = operands[2];
- rtx y_f = gen_reg_rtx(SFmode);
- rtx x0_f = gen_reg_rtx(SFmode);
- rtx x1_f = gen_reg_rtx(SFmode);
- rtx x1 = gen_reg_rtx(DFmode);
- rtx x2 = gen_reg_rtx(DFmode);
- rtx t1_f = gen_reg_rtx(SFmode);
- rtx t1 = gen_reg_rtx(DFmode);
- rtx two = gen_reg_rtx(DFmode);
- rtx two_f = gen_reg_rtx(SFmode);
-
- emit_insn (gen_truncdfsf2 (y_f, y));
- emit_insn (gen_frest_sf (x0_f, y_f));
- emit_insn (gen_fi_sf (x0_f, y_f, x0_f));
- emit_insn (gen_movsf (two_f, spu_float_const(\"2.0\",SFmode)));
- emit_insn (gen_fnms_sf (t1_f, y_f, x0_f, two_f));
- emit_insn (gen_mulsf3 (x1_f, t1_f, x0_f));
- emit_insn (gen_extendsfdf2 (x1, x1_f));
- emit_insn (gen_extendsfdf2 (two, two_f));
- emit_insn (gen_movdf (t1, two));
- emit_insn (gen_fnms_df (t1, y, x1, t1));
- emit_insn (gen_muldf3 (x2, x1, t1));
- emit_insn (gen_fnms_df (two, y, x2, two));
- emit_insn (gen_muldf3 (dst, x2, two));
- emit_insn (gen_muldf3 (dst, dst, x));
- DONE;
-}")
;; sqrt