sse.md (vec_dupv4sf): Correct mode of forced register.
authorUros Bizjak <uros@gcc.gnu.org>
Sat, 11 Jun 2011 11:08:41 +0000 (13:08 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Sat, 11 Jun 2011 11:08:41 +0000 (13:08 +0200)
* config/i386/sse.md (vec_dupv4sf): Correct mode of forced register.
(*vec_dupv2df): Rename from vec_dupv2df.
(vec_dupv2df): New expander.

* config/i386/sse.md (AVX_VEC_DUP_MODE): Rename from AVX256MODE24P.

From-SVN: r174948

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

index 4857e927109051be5a1f62275e30660142ee9470..1a141e3c160a4bef998d3e7c7c265c6dc851dc17 100644 (file)
@@ -1,3 +1,19 @@
+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-11  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/sse.md (AVX_VEC_DUP_MODE): Rename from AVX256MODE24P.
+
+2011-06-11  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md: Use default value in "isa" attribute.
+       * config/i386/sse.md: Ditto.
+       * config/i386/mmx.md: Ditto.
+
 2011-06-10  Wei Guozhi  <carrot@google.com>
 
        PR target/45335
 2011-06-10  Jan Hubicka  <jh@suse.cz>
 
        * opts.c (default_options): Enlist OPT_finline_functions_called_once.
-       * common.opt (flag_inline_functions_called_once):Do not initialize to 1.
+       * common.opt (flag_inline_functions_called_once): Do not
+       initialize to 1.
 
 2011-06-10  Jan Hubicka  <jh@suse.cz>
 
        * ipa-cp.c (ipcp_versionable_function_p): Thunks are not versionable.
-       (ipcp_initialize_node_lattices): Do not deal with aliases; Do not try to
-       propagate through thunks.
+       (ipcp_initialize_node_lattices): Do not deal with aliases;
+       Do not try to propagate through thunks.
        (ipcp_change_tops_to_bottom): Do not deal with aliases.
 
 2011-06-10  Jan Hubicka  <jh@suse.cz>
 
-       * ipa-prop.c (ipa_write_node_info): Stream jump functions for indirect
-       calls.
+       * ipa-prop.c (ipa_write_node_info): Stream jump functions
+       for indirect calls.
        (ipa_read_node_info): Likewise.
 
 2011-06-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
@@ -68,7 +85,7 @@
        (gimple_expand_builtin_pow): Minor cleanup.
        (gimple_expand_builtin_cabs): New.
        (execute_cse_sincos): Add case for BUILT_IN_CABS.
-       
+
 2011-06-10  Jan Hubicka  <jh@suse.cz>
 
        * ipa-cp.c (ipcp_versionable_function_p): Aliases are not versionable.
 
 2011-06-10  Richard Guenther  <rguenther@suse.de>
 
-       * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine):
-       Scan stmts forward when combining, visit inserted stmts when
-       a stmt was changed.
+       * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Scan stmts
+       forward when combining, visit inserted stmts when a stmt was changed.
 
 2011-06-10  Paolo Carlini  <paolo.carlini@oracle.com>
 
 2011-06-10  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>
            Richard Earnshaw  <rearnsha@arm.com>
 
-       * config/arm/arm.c (const_ok_for_op): Check to see
-       if mvn can be used.
+       * config/arm/arm.c (const_ok_for_op): Check to see if mvn can be used.
        * config/arm/vfp.md (*arm_movdi_vfp): Delete.
        (*thumb2_movdi_vfp): Delete.
        (*arm_movdi_vfp_cortexa8): Delete.
        (cgraph_for_node_thunks_and_aliases): New function.
        (cgraph_for_node_and_aliases): New function.
        (cgraph_make_node_local_1): Break out from ...
-       (cgraph_make_node_local) ... here; use cgraph_for_node_thunks_and_aliases.
+       (cgraph_make_node_local) ... here; use
+       cgraph_for_node_thunks_and_aliases.
        (cgraph_set_nothrow_flag_1): Break out from ...
-       (cgraph_set_nothrow_flag) ... here; use cgraph_for_node_thunks_and_aliases.
+       (cgraph_set_nothrow_flag) ... here;
+       use cgraph_for_node_thunks_and_aliases.
        (cgraph_set_const_flag_1): Break out from ...
-       (cgraph_set_const_flag) ... here; use cgraph_for_node_thunks_and_aliases.
+       (cgraph_set_const_flag) ... here;
+       use cgraph_for_node_thunks_and_aliases.
        (cgraph_set_pure_flag_1): Break out from ...
-       (cgraph_set_pure_flag) ... here; use cgraph_for_node_thunks_and_aliases.
+       (cgraph_set_pure_flag) ... here;
+       use cgraph_for_node_thunks_and_aliases.
        (cgraph_propagate_frequency_1): Break out from ...
-       (cgraph_propagate_frequency) ... here; use cgraph_for_node_thunks_and_aliases.
+       (cgraph_propagate_frequency) ... here; use
+       cgraph_for_node_thunks_and_aliases.
        (cgraph_used_from_object_file_p): Do not care about aliases.
-       (cgraph_not_only_called_directly_p_1, cgraph_only_called_directly_p): New functions.
+       (cgraph_not_only_called_directly_p_1, cgraph_only_called_directly_p):
+       New functions.
        (collect_callers_of_node_1, collect_callers_of_node): New functions.
 
 2011-06-10  Hans-Peter Nilsson  <hp@axis.com>
 2011-06-10  Hans-Peter Nilsson  <hp@axis.com>
 
        PR rtl-optimization/49154
-       * ira-costs.c (setup_regno_cost_classes_by_mode): If there
-       already is a matching slot in the hashtable, assign it to
-       classes_ptr.
+       * ira-costs.c (setup_regno_cost_classes_by_mode): If there already
+       is a matching slot in the hashtable, assign it to classes_ptr.
 
        PR rtl-optimization/49154
        * doc/tm.texi.in (Register Classes): Document rule for the narrowest
        register classes.
        * doc/tm.texi: Regenerate.
 
->>>>>>> .r174929
 2011-06-09  Kaz Kojima  <kkojima@gcc.gnu.org>
 
        PR target/49307
index 0dd4c304d67acd60dd1040430bd469f8526c150f..9ede7700aa6637af1cf369425deff000bd2e9346 100644 (file)
 
 ;; Mix-n-match
 (define_mode_iterator AVX256MODE2P [V8SI V8SF V4DF])
-(define_mode_iterator AVX256MODE24P [V8SI V8SF V4DI V4DF])
 
 (define_mode_iterator FMAMODE [SF DF V4SF V2DF V8SF V4DF])
 
   "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 "prefix" "orig,vex,orig,vex,maybe_vex,orig,orig,vex,maybe_vex")
    (set_attr "mode" "DF,DF,V1DF,V1DF,V1DF,V2DF,V1DF,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")))]
    (set_attr "prefix" "vex")
    (set_attr "mode" "OI")])
 
+;; Modes handled by AVX vec_dup patterns.
+(define_mode_iterator AVX_VEC_DUP_MODE
+  [V8SI V8SF V4DI V4DF])
+
 (define_insn "vec_dup<mode>"
-  [(set (match_operand:AVX256MODE24P 0 "register_operand" "=x,x")
-       (vec_duplicate:AVX256MODE24P
+  [(set (match_operand:AVX_VEC_DUP_MODE 0 "register_operand" "=x,x")
+       (vec_duplicate:AVX_VEC_DUP_MODE
          (match_operand:<ssescalarmode> 1 "nonimmediate_operand" "m,?x")))]
   "TARGET_AVX"
   "@
    (set_attr "mode" "V8SF")])
 
 (define_split
-  [(set (match_operand:AVX256MODE24P 0 "register_operand" "")
-       (vec_duplicate:AVX256MODE24P
+  [(set (match_operand:AVX_VEC_DUP_MODE 0 "register_operand" "")
+       (vec_duplicate:AVX_VEC_DUP_MODE
          (match_operand:<ssescalarmode> 1 "register_operand" "")))]
   "TARGET_AVX && reload_completed"
-  [(set (match_dup 2) (vec_duplicate:<ssehalfvecmode> (match_dup 1)))
-   (set (match_dup 0) (vec_concat:AVX256MODE24P (match_dup 2) (match_dup 2)))]
+  [(set (match_dup 2)
+       (vec_duplicate:<ssehalfvecmode> (match_dup 1)))
+   (set (match_dup 0)
+       (vec_concat:AVX_VEC_DUP_MODE (match_dup 2) (match_dup 2)))]
   "operands[2] = gen_rtx_REG (<ssehalfvecmode>mode, REGNO (operands[0]));")
 
 (define_insn "avx_vbroadcastf128_<mode>"