OSDN Git Service

PR target/45142
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 1 Aug 2010 10:41:57 +0000 (10:41 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 1 Aug 2010 10:41:57 +0000 (10:41 +0000)
* config/i386/sse.md (vec_set<mode>_0): Do not set mode attribute for
alternative 2.
(vec_set<moode>_0 splitter): Use SSEMODE4S mode iterator to also
split V4SI operands.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162797 138bc75d-0d04-0410-961f-82ee72b054a4

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

index e5fc835..a60893a 100644 (file)
@@ -1,3 +1,11 @@
+2010-08-01  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/45142
+       * config/i386/sse.md (vec_set<mode>_0): Do not set mode attribute for
+       alternative 2.
+       (vec_set<moode>_0 splitter): Use SSEMODE4S mode iterator to also
+       split V4SI operands.
+
 2010-08-01  Anatoly Sokolov  <aesok@post.ru>
 
        * config/mmix/mmix.h (ASM_OUTPUT_SOURCE_FILENAME): Remove macro.
@@ -53,8 +61,7 @@
        * config/alpha/alpha.c (alpha_handle_option): Handle -G.
        * config/frv/frv.c (frv_handle_option): Handle -G.
        * config/ia64/ia64.c (ia64_handle_option): Handle -G.
-       * config/lm32/lm32.c (lm32_handle_option, TARGET_HANDLE_OPTION):
-       New.
+       * config/lm32/lm32.c (lm32_handle_option, TARGET_HANDLE_OPTION): New.
        * config/m32r/m32r.c (m32r_handle_option): Handle -G.
        * config/mips/mips.c (mips_handle_option): Handle -G.
        * config/rs6000/rs6000.c (rs6000_handle_option) Handle -G.
index 5ac0da8..b505c8e 100644 (file)
    movss\t{%2, %0|%0, %2}
    #"
   [(set_attr "type" "ssemov")
-   (set_attr "mode" "SF")])
+   (set_attr "mode" "SF,SF,*")])
 
 ;; A subset is vec_setv4sf.
 (define_insn "*vec_setv4sf_avx"
    (set_attr "mode" "V4SF")])
 
 (define_split
-  [(set (match_operand:V4SF 0 "memory_operand" "")
-       (vec_merge:V4SF
-         (vec_duplicate:V4SF
-           (match_operand:SF 1 "nonmemory_operand" ""))
+  [(set (match_operand:SSEMODE4S 0 "memory_operand" "")
+       (vec_merge:SSEMODE4S
+         (vec_duplicate:SSEMODE4S
+           (match_operand:<ssescalarmode> 1 "nonmemory_operand" ""))
          (match_dup 0)
          (const_int 1)))]
   "TARGET_SSE && reload_completed"
   [(const_int 0)]
 {
-  emit_move_insn (adjust_address (operands[0], SFmode, 0), operands[1]);
+  emit_move_insn (adjust_address (operands[0], <ssescalarmode>mode, 0),
+                 operands[1]);
   DONE;
 })