From 63a4a903a76197650e672fe559ac654b7c85ec43 Mon Sep 17 00:00:00 2001 From: John Wehle Date: Tue, 13 Apr 1999 17:47:40 +0000 Subject: [PATCH] John Wehle (john@feith.com) John Wehle (john@feith.com) * i386.md (movdi): Add splitter. From-SVN: r26415 --- gcc/ChangeLog | 4 ++++ gcc/config/i386/i386.md | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 929a5700afd..a3cbe5f15d4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 * config/c4x/c4x.md (storeqf_int, storeqf_int_clobber, loadqf_int, diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 20901d32be9..f54565e127d 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -1699,6 +1699,40 @@ [(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; + } +}") ;;- conversion instructions ;;- NONE -- 2.30.2