sse.md (sse2_stored): Don't split to inter-unit move if inter-unit move isn't allowed.
authorH.J. Lu <hongjiu.lu@intel.com>
Mon, 23 Apr 2007 16:15:14 +0000 (16:15 +0000)
committerH.J. Lu <hjl@gcc.gnu.org>
Mon, 23 Apr 2007 16:15:14 +0000 (09:15 -0700)
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

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

index 6f7e715bac2b9407b10d71f3e1bcd4a9e62cf49b..1420676d04aa273f433a0d713a3ac246b61f2bc8 100644 (file)
@@ -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
index 16219e08aa23c368291d77bf75025581cd5e81d4..279e18e26b67a9890dc67b9584cf2627a22140a3 100644 (file)
          (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]));
        (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]));