c4x.md (*movhi_stik): New pattern.
authorMichael Hayes <m.hayes@elec.canterbury.ac.nz>
Mon, 8 Feb 1999 14:58:08 +0000 (14:58 +0000)
committerMichael Hayes <m.hayes@gcc.gnu.org>
Mon, 8 Feb 1999 14:58:08 +0000 (14:58 +0000)
* config/c4x/c4x.md (*movhi_stik): New pattern.
(movhi): Allow some immediate constants to be directly
stored in memory.

From-SVN: r25091

gcc/ChangeLog
gcc/config/c4x/c4x.md

index 8d18280eb9c9a9777171678c0be6bc2656ad140c..48267988587b7345c684f0f4e9513acd2c837a80 100644 (file)
@@ -1,3 +1,9 @@
+Tue Feb  9 11:55:04 1999  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
+
+       * config/c4x/c4x.md (*movhi_stik): New pattern.
+       (movhi): Allow some immediate constants to be directly
+       stored in memory.
+
 Tue Feb  9 11:34:15 1999  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
 
        * config/c4x/c4x.md (all call patterns): Add constraints "Ur".
index 3d7b0f78d452a43078a9bbcb692c0a8ad9b42ea6..d49b4116cce4ccf083ee0047ff2152026c5fd067 100644 (file)
 ; TWO OPERAND LONG LONG INSTRUCTIONS
 ;
 
+(define_insn "*movhi_stik"
+  [(set (match_operand:HI 0 "memory_operand" "=m")
+        (match_operand:HI 1 "stik_const_operand" "K"))]
+  "! TARGET_C3X"
+  "#"
+  [(set_attr "type" "multi")])
+
 ; We could load some constants using define_splits for the C30
 ; in the large memory model---these would emit shift and or insns.
 (define_expand "movhi"
   [(set (match_operand:HI 0 "src_operand" "")
        (match_operand:HI 1 "src_operand" ""))]
   "reload_completed
-   && (reg_operand (operands[0], HImode) || reg_operand (operands[1], HImode))"
+   && (reg_operand (operands[0], HImode)
+       || reg_operand (operands[1], HImode)
+       || stik_const_operand (operands[1], HImode))"
   [(set (match_dup 2) (match_dup 3))
    (set (match_dup 4) (match_dup 5))]
   "operands[2] = c4x_operand_subword (operands[0], 0, 1, HImode);