aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/spu/spu.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/spu/spu.md')
-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