aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2007-04-23 16:15:14 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2007-04-23 09:15:14 -0700
commit9a072eb638e63c0706890a890d1edc428b2fb01d (patch)
tree51fc00a7a794a251f4b9ec1a6886629a512e1045
parent6e0d7c6e0d8d744a57e2d111ab95a7ab8115ebf8 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/i386/sse.md11
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]));