]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
sse.md (vec_dupv4sf): Correct mode of forced register.
authorUros Bizjak <ubizjak@gmail.com>
Sat, 11 Jun 2011 12:08:53 +0000 (14:08 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Sat, 11 Jun 2011 12:08:53 +0000 (14:08 +0200)
* config/i386/sse.md (vec_dupv4sf): Correct mode of forced register.
(*vec_dupv2df): Rename from vec_dupv2df.
(vec_dupv2df): New expander.

From-SVN: r174951

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

index 133949248b825f9b340cc12936bd6e31834d5433..2e3fba348d07063ff21ccb9dbd07f6423dd13e1f 100644 (file)
@@ -1,3 +1,9 @@
+2011-06-11  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/sse.md (vec_dupv4sf): Correct mode of forced register.
+       (*vec_dupv2df): Rename from vec_dupv2df.
+       (vec_dupv2df): New expander.
+
 2011-06-09  Eric Botcazou  <ebotcazou@adacore.com>
 
        * config/sparc/sparc.md (return_internal): Adjust 'length' attribute.
index 67f55ee7abe18c4810841a847cc37b8e072d001c..424e09254339a5db9b6e2eb2a93e35b7e6b2be30 100644 (file)
   "TARGET_SSE"
 {
   if (!TARGET_AVX)
-    operands[1] = force_reg (V4SFmode, operands[1]);
+    operands[1] = force_reg (SFmode, operands[1]);
 })
 
 (define_insn "*vec_dupv4sf_avx"
    (set_attr "length_immediate" "*,*,*,1,*,*")
    (set_attr "mode" "DF,V1DF,V1DF,V2DF,V1DF,V1DF")])
 
+(define_expand "vec_dupv2df"
+  [(set (match_operand:V2DF 0 "register_operand" "")
+       (vec_duplicate:V2DF
+         (match_operand:DF 1 "nonimmediate_operand" "")))]
+  "TARGET_SSE2"
+{
+  if (!TARGET_SSE3)
+    operands[1] = force_reg (DFmode, operands[1]);
+})
+
 (define_insn "*vec_dupv2df_sse3"
   [(set (match_operand:V2DF 0 "register_operand" "=x")
        (vec_duplicate:V2DF
    (set_attr "prefix" "maybe_vex")
    (set_attr "mode" "DF")])
 
-(define_insn "vec_dupv2df"
+(define_insn "*vec_dupv2df"
   [(set (match_operand:V2DF 0 "register_operand" "=x")
        (vec_duplicate:V2DF
          (match_operand:DF 1 "register_operand" "0")))]