John Wehle (john@feith.com)
authorJohn Wehle <john@feith.com>
Tue, 13 Apr 1999 17:47:40 +0000 (17:47 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 13 Apr 1999 17:47:40 +0000 (10:47 -0700)
John Wehle  (john@feith.com)
        * i386.md (movdi): Add splitter.

From-SVN: r26415

gcc/ChangeLog
gcc/config/i386/i386.md

index 929a5700afdf3cdf5be7d7b35290d54acfb7638b..a3cbe5f15d439c765a904cff473ff24695e98658 100644 (file)
@@ -1,3 +1,7 @@
+Tue Apr 13 17:47:14 1999  John Wehle  (john@feith.com)
+
+       * i386.md (movdi): Add splitter.
+
 Wed Apr 14 10:04:27 1999  Michael Hayes  <m.hayes@elec.canterbury.ac.nz>
 
        * config/c4x/c4x.md (storeqf_int, storeqf_int_clobber, loadqf_int,
index 20901d32be9ec0e4707d68a44046e48f6ba6163d..f54565e127d63af575e7e8d0c1948b597b6d012d 100644 (file)
   [(set_attr "type" "integer,memory")
    (set_attr "memory" "*,load")])
 
+(define_split
+  [(set (match_operand:DI 0 "nonimmediate_operand" "")
+       (match_operand:DI 1 "general_operand" ""))]
+  "reload_completed
+   && (offsettable_memref_p (operands[0])
+       || nonmemory_operand (operands[0], DImode))
+   && (offsettable_memref_p (operands[1])
+       || nonmemory_operand (operands[1], DImode))
+   && (! reg_overlap_mentioned_p (gen_lowpart (SImode, operands[0]),
+                                 operands[1])
+       || ! reg_overlap_mentioned_p (gen_highpart (SImode, operands[0]),
+                                    operands[1]))"
+  [(set (match_dup 2)
+       (match_dup 4))
+   (set (match_dup 3)
+       (match_dup 5))]
+  "
+{
+  split_di (&operands[0], 1, &operands[2], &operands[3]);
+  split_di (&operands[1], 1, &operands[4], &operands[5]);
+
+  if (reg_overlap_mentioned_p (operands[2], operands[1]))
+    {
+    rtx tmp;
+
+    tmp = operands[2];
+    operands[2] = operands[3];
+    operands[3] = tmp;
+
+    tmp = operands[4];
+    operands[4] = operands[5];
+    operands[5] = tmp;
+    }
+}")
 \f
 ;;- conversion instructions
 ;;- NONE