h8300.md (abssf2): New.
authorKazu Hirata <kazu@cs.umass.edu>
Mon, 10 Feb 2003 22:45:39 +0000 (22:45 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Mon, 10 Feb 2003 22:45:39 +0000 (22:45 +0000)
* config/h8300/h8300.md (abssf2): New.
(*abssf2_h8300): Likewise.
(*abssf2_h8300hs): Likewise.

From-SVN: r62654

gcc/ChangeLog
gcc/config/h8300/h8300.md

index cf7897e86830a68bbc7f360e761800cfbd28e7e0..ab101b8063f14300f3c29d1854b858c1815f186f 100644 (file)
@@ -1,3 +1,9 @@
+2003-02-10  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * config/h8300/h8300.md (abssf2): New.
+       (*abssf2_h8300): Likewise.
+       (*abssf2_h8300hs): Likewise.
+
 2003-02-10  Phil Edwards  <pme@gcc.gnu.org>
 
        * tree.c (build_tree_list):  Fix parameter names in comment.
index 808b53f31ccec3a5193cb3ed7ad3119de2661ed2..69e2f720c3a90411995cec47c4ba006d8b7cd7f1 100644 (file)
   "xor.w\\t#32768,%e0"
   [(set_attr "cc" "clobber")
    (set_attr "length" "4")])
+\f
+;; ----------------------------------------------------------------------
+;; 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")])
+\f
 ;; ----------------------------------------------------------------------
 ;; NOT INSTRUCTIONS
 ;; ----------------------------------------------------------------------