diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2007-04-23 16:15:14 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2007-04-23 09:15:14 -0700 |
commit | 9a072eb638e63c0706890a890d1edc428b2fb01d (patch) | |
tree | 51fc00a7a794a251f4b9ec1a6886629a512e1045 | |
parent | 6e0d7c6e0d8d744a57e2d111ab95a7ab8115ebf8 (diff) | |
download | gcc-9a072eb638e63c0706890a890d1edc428b2fb01d.zip gcc-9a072eb638e63c0706890a890d1edc428b2fb01d.tar.gz gcc-9a072eb638e63c0706890a890d1edc428b2fb01d.tar.bz2 |
sse.md (sse2_stored): Don't split to inter-unit move if inter-unit move isn't allowed.
2007-04-23 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/sse.md (sse2_stored): Don't split to inter-unit
move if inter-unit move isn't allowed.
Don't split moving the first element of V2DI to DI to inter-unit
move if inter-unit move isn't allowed.
From-SVN: r124070
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 11 |
2 files changed, 16 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6f7e715..1420676 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-04-23 H.J. Lu <hongjiu.lu@intel.com> + + * config/i386/sse.md (sse2_stored): Don't split to inter-unit + move if inter-unit move isn't allowed. + Don't split moving the first element of V2DI to DI to inter-unit + move if inter-unit move isn't allowed. + 2007-04-23 Richard Guenther <rguenther@suse.de> * tree-ssa-sink.c (execute_sink_code): Calculate CDI_DOMINATORS diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 16219e0..279e18e 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -4010,7 +4010,10 @@ (parallel [(const_int 0)])))] "TARGET_SSE" "#" - "&& reload_completed" + "&& reload_completed + && (TARGET_INTER_UNIT_MOVES + || MEM_P (operands [0]) + || !GENERAL_REGNO_P (true_regnum (operands [0])))" [(set (match_dup 0) (match_dup 1))] { operands[1] = gen_rtx_REG (SImode, REGNO (operands[1])); @@ -4045,7 +4048,11 @@ (vec_select:DI (match_operand:V2DI 1 "register_operand" "") (parallel [(const_int 0)])))] - "TARGET_SSE && reload_completed" + "TARGET_SSE + && reload_completed + && (TARGET_INTER_UNIT_MOVES + || MEM_P (operands [0]) + || !GENERAL_REGNO_P (true_regnum (operands [0])))" [(set (match_dup 0) (match_dup 1))] { operands[1] = gen_rtx_REG (DImode, REGNO (operands[1])); |