From 2a4e6df4ce3e3b4048dce3041686331e885915fd Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Mon, 10 Feb 2003 22:45:39 +0000 Subject: [PATCH] h8300.md (abssf2): New. * config/h8300/h8300.md (abssf2): New. (*abssf2_h8300): Likewise. (*abssf2_h8300hs): Likewise. From-SVN: r62654 --- gcc/ChangeLog | 6 ++++++ gcc/config/h8300/h8300.md | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cf7897e8683..ab101b8063f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-02-10 Kazu Hirata + + * config/h8300/h8300.md (abssf2): New. + (*abssf2_h8300): Likewise. + (*abssf2_h8300hs): Likewise. + 2003-02-10 Phil Edwards * tree.c (build_tree_list): Fix parameter names in comment. diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index 808b53f31cc..69e2f720c3a 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -1437,7 +1437,33 @@ "xor.w\\t#32768,%e0" [(set_attr "cc" "clobber") (set_attr "length" "4")]) + +;; ---------------------------------------------------------------------- +;; ABSOLUTE VALUE INSTRUCTIONS +;; ---------------------------------------------------------------------- +(define_expand "abssf2" + [(set (match_operand:SF 0 "register_operand" "") + (abs:SF (match_operand:SF 1 "register_operand" "")))] + "" + "") + +(define_insn "*abssf2_h8300" + [(set (match_operand:SF 0 "register_operand" "=r") + (abs:SF (match_operand:SF 1 "register_operand" "0")))] + "TARGET_H8300" + "and.b\\t#127,%z0" + [(set_attr "cc" "clobber") + (set_attr "length" "2")]) + +(define_insn "*abssf2_h8300hs" + [(set (match_operand:SF 0 "register_operand" "=r") + (abs:SF (match_operand:SF 1 "register_operand" "0")))] + "TARGET_H8300H || TARGET_H8300S" + "and.w\\t#32767,%e0" + [(set_attr "cc" "clobber") + (set_attr "length" "4")]) + ;; ---------------------------------------------------------------------- ;; NOT INSTRUCTIONS ;; ---------------------------------------------------------------------- -- 2.30.2