From 138eff91a262e1006e755e02eafd9c8ce5287721 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 27 Jan 2000 20:36:43 -0800 Subject: [PATCH] * alpha.md (trunctfsf2): New. From-SVN: r31662 --- gcc/ChangeLog | 4 ++++ gcc/config/alpha/alpha.md | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6397e8bc646..0dc225fed65 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2000-01-27 Richard Henderson + + * alpha.md (trunctfsf2): New. + 2000-01-27 Andrew Hobson * configure.in (alpha-dec-osf5): Enable MASK_SUPPORT_ARCH. diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 4fa6e563b1c..844f830e8fe 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -2207,6 +2207,22 @@ "TARGET_HAS_XFLOATING_LIBS" "alpha_emit_xfloating_cvt (FLOAT_TRUNCATE, operands); DONE;") +;; ??? This isn't quite right, as rounding isn't correct. But it's +;; extremely tortureous to do this correctly with the functionality +;; availible in the library. + +(define_expand "trunctfsf2" + [(use (match_operand:SF 0 "register_operand" "")) + (use (match_operand:TF 1 "general_operand" ""))] + "TARGET_HAS_XFLOATING_LIBS" + " +{ + rtx tmp = gen_reg_rtx (DFmode); + emit_insn (gen_trunctfdf2 (tmp, operands[1])); + emit_insn (gen_truncdfsf2 (operands[0], tmp)); + DONE; +}") + (define_insn "" [(set (match_operand:SF 0 "register_operand" "=&f") (div:SF (match_operand:SF 1 "reg_or_fp0_operand" "fG")