mips.md (store): Add attributes for QI and HI.
authorAdam Nemet <anemet@caviumnetworks.com>
Wed, 13 May 2009 21:52:56 +0000 (21:52 +0000)
committerAdam Nemet <nemet@gcc.gnu.org>
Wed, 13 May 2009 21:52:56 +0000 (21:52 +0000)
* config/mips/mips.md (store): Add attributes for QI and HI.
Update comment.
(truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
(truncdi<mode>2): ... this new pattern.

From-SVN: r147503

gcc/ChangeLog
gcc/config/mips/mips.md

index 141762df857083f12924c8713c6d20643c78d8dd..c2da14007b37868e2d9f35e277f84f457f7aad04 100644 (file)
@@ -1,3 +1,10 @@
+2009-05-13  Adam Nemet  <anemet@caviumnetworks.com>
+
+       * config/mips/mips.md (store): Add attributes for QI and HI.
+       Update comment.
+       (truncdisi2, truncdihi2, truncdiqi2): Merge these into ...
+       (truncdi<mode>2): ... this new pattern.
+
 2009-05-13  Brad Hards  <bradh@kde.org>
 
        * Makefile.in (TEXI_GCCINT_FILES): Add plugins.texi.
index 713bd834730212503fbd6b97a22b94bb75414734..3b44a84104be0904c830cc06519270065fe91b27 100644 (file)
 ;; This attributes gives the mode mask of a SHORT.
 (define_mode_attr mask [(QI "0x00ff") (HI "0xffff")])
 
-;; Mode attributes for GPR loads and stores.
+;; Mode attributes for GPR loads.
 (define_mode_attr load [(SI "lw") (DI "ld")])
-(define_mode_attr store [(SI "sw") (DI "sd")])
+;; Instruction names for stores.
+(define_mode_attr store [(QI "sb") (HI "sh") (SI "sw") (DI "sd")])
 
 ;; Similarly for MIPS IV indexed FPR loads and stores.
 (define_mode_attr loadx [(SF "lwxc1") (DF "ldxc1") (V2SF "ldxc1")])
 ;;
 ;; Step A needs a real instruction but step B does not.
 
-(define_insn "truncdisi2"
-  [(set (match_operand:SI 0 "nonimmediate_operand" "=d,m")
-        (truncate:SI (match_operand:DI 1 "register_operand" "d,d")))]
+(define_insn "truncdi<mode>2"
+  [(set (match_operand:SUBDI 0 "nonimmediate_operand" "=d,m")
+        (truncate:SUBDI (match_operand:DI 1 "register_operand" "d,d")))]
   "TARGET_64BIT"
   "@
     sll\t%0,%1,0
-    sw\t%1,%0"
-  [(set_attr "move_type" "sll0,store")
-   (set_attr "mode" "SI")])
-
-(define_insn "truncdihi2"
-  [(set (match_operand:HI 0 "nonimmediate_operand" "=d,m")
-        (truncate:HI (match_operand:DI 1 "register_operand" "d,d")))]
-  "TARGET_64BIT"
-  "@
-    sll\t%0,%1,0
-    sh\t%1,%0"
-  [(set_attr "move_type" "sll0,store")
-   (set_attr "mode" "SI")])
-
-(define_insn "truncdiqi2"
-  [(set (match_operand:QI 0 "nonimmediate_operand" "=d,m")
-        (truncate:QI (match_operand:DI 1 "register_operand" "d,d")))]
-  "TARGET_64BIT"
-  "@
-    sll\t%0,%1,0
-    sb\t%1,%0"
+    <store>\t%1,%0"
   [(set_attr "move_type" "sll0,store")
    (set_attr "mode" "SI")])