i386.c (ix86_expand_sse2_abs): Rename function arguments.
authorUros Bizjak <uros@gcc.gnu.org>
Thu, 31 Oct 2013 18:37:29 +0000 (19:37 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Thu, 31 Oct 2013 18:37:29 +0000 (19:37 +0100)
* config/i386/i386.c (ix86_expand_sse2_abs): Rename function arguments.
Use gcc_unreachable for unhandled modes.  Do not check results of
expand_simple_binop.  If not expanded to target, move the result.

From-SVN: r204271

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog

index c2e139faaff9ffe3ac031bd36e43b48de56491f2..48a6aab2fb50a6cbdef24138f040ae9dac2f200b 100644 (file)
@@ -1,3 +1,9 @@
+2013-10-31  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.c (ix86_expand_sse2_abs): Rename function arguments.
+       Use gcc_unreachable for unhandled modes.  Do not check results of
+       expand_simple_binop.  If not expanded to target, move the result.
+
 2013-10-31  Chung-Ju Wu  <jasonwucj@gmail.com>
            Shiva Chen  <shiva0217@gmail.com>
 
        PR other/58545
        * reload1.c (update_eliminables_and_spill): New function, broken
        out of reload.
-       (reload): Use it.  Check for frame size change after frame
-       size alignment, and call update_eliminables_and_spill first
-       if continue-ing.
+       (reload): Use it.  Check for frame size change after frame size
+       alignment, and call update_eliminables_and_spill first if continue-ing.
 
 2013-10-30  Cong Hou  <congh@google.com>
 
 
 2013-10-30  David Malcolm  <dmalcolm@redhat.com>
 
-       * cgraphunit.c (analyze_functions): Split symtab_node
-       declarations onto multiple lines to make things easier
-       for rename_symtab.py.
+       * cgraphunit.c (analyze_functions): Split symtab_node declarations
+       onto multiple lines to make things easier for rename_symtab.py.
 
        * symtab.c (symtab_dissolve_same_comdat_group_list): Likewise.
        (symtab_semantically_equivalent_p): Likewise.
        (struct ira_allocno) New member allocno_prefs.
        (ALLOCNO_PREFS): New macro.
        (ira_prefs, ira_prefs_num): New external vars.
-       (ira_setup_alts, ira_get_dup_out_num, ira_debug_pref): New
-       prototypes.
-       (ira_debug_prefs, ira_debug_allocno_prefs, ira_create_pref):
-       Ditto.
+       (ira_setup_alts, ira_get_dup_out_num, ira_debug_pref): New prototypes.
+       (ira_debug_prefs, ira_debug_allocno_prefs, ira_create_pref): Ditto.
        (ira_add_allocno_pref, ira_remove_pref, ira_remove_allocno_prefs):
        Ditto.
        (ira_add_allocno_copy_to_list): Remove prototype.
        BUILT_IN_CHKP_INTERSECT, BUILT_IN_CHKP_ARG_BND, BUILT_IN_CHKP_NARROW,
        BUILT_IN_CHKP_EXTRACT_LOWER, BUILT_IN_CHKP_EXTRACT_UPPER.
        * common.opt (fcheck-pointer-bounds): New.
-       * toplev.c (process_options): Check Pointer Bounds Checker is supported.
+       * toplev.c (process_options): Check Pointer Bounds Checker is
+       supported.
        * doc/extend.texi: Document Pointer Bounds Checker built-in functions.
 
 2013-10-30  Ilya Enkovich  <ilya.enkovich@intel.com>
 2013-10-29  Andrew Pinski <apinski@cavium.com>
 
        * tree-ssa-ifcombine.c: Include rtl.h and tm_p.h.
-       (ifcombine_ifandif): Handle cases where
-       maybe_fold_and_comparisons fails, combining the branches
-       anyways.
-       (tree_ssa_ifcombine): Inverse the order of
-       the basic block walk, increases the number of combinings.
+       (ifcombine_ifandif): Handle cases where maybe_fold_and_comparisons
+       fails, combining the branches anyways.
+       (tree_ssa_ifcombine): Inverse the order of the basic block walk,
+       increases the number of combinings.
        * gimple.h (gsi_start_nondebug_after_labels_bb): New function.
 
 2013-10-29  Mike Stump  <mikestump@comcast.net>
        (CILK_SYNC_STMT): Added documentation for _Cilk_sync.
        * passes.texi (Cilk Keywords): New section that describes the compiler
        code changes for handling Cilk Keywords.
-       
+
 2013-10-29  David Malcolm  <dmalcolm@redhat.com>
 
        Patch autogenerated by refactor_symtab.py from
        (varpool_remove_node): Likewise.
        (varpool_node_for_decl): Likewise.
        (varpool_create_empty_node): Likewise.
-       * config/i386/i386.c (ix86_generate_version_dispatcher_body):
-       Likewise.
+       * config/i386/i386.c (ix86_generate_version_dispatcher_body): Likewise.
        (ix86_get_function_versions_dispatcher): Likewise.
 
 2013-10-29  David Malcolm  <dmalcolm@redhat.com>
        * symtab.c (symtab_hash): Change symtab_node_def to symtab_node_base.
        (assembler_name_hash): Likewise.
 
-2013-10-29  Martin Liska <marxin.liska@gmail.com>
+2013-10-29  Martin Liska  <marxin.liska@gmail.com>
 
-       * doc/tree-ssa.texi (gimple_phi_result): Document.
-       (gimple_phi_num_args, gimple_phi_arg): Likewise.
-       (gimple_phi_arg_edge, gimple_phi_arg_def): Likewise.
-       (PHI_RESULT, PHI_NUM_ARGS): Remove.
-       (PHI_ARG_ELT, PHI_ARG_EDGE, PHI_ARG_DEF): Likewise.
+       * doc/tree-ssa.texi (gimple_phi_result): Document.
+       (gimple_phi_num_args, gimple_phi_arg): Likewise.
+       (gimple_phi_arg_edge, gimple_phi_arg_def): Likewise.
+       (PHI_RESULT, PHI_NUM_ARGS): Remove.
+       (PHI_ARG_ELT, PHI_ARG_EDGE, PHI_ARG_DEF): Likewise.
 
 2013-10-29  Andrew MacLeod  <amacleod@redhat.com>
 
        fields of the type (including inherited ones).
        (write_func_for_structure): Don't write fns for subclasses, only
        for the ultimate base class within an inheritance hierarchy.
-       Subclasses-marking will be handled by the base class marking
-       functions.
+       Subclasses-marking will be handled by the base class marking functions.
        (write_types): Likewise.
        (write_local_func_for_structure): Likewise.
        (USED_BY_TYPED_GC_P): Emit allocators for subclasses that have
        (VEC_PERM_AVX2): Ditto.
        (VEC_PERM_CONST): Ditto.
 
-
 2013-10-28  Joern Rennecke  <joern.rennecke@embecosm.com>
 
        * config/arc/arc.c (arc_ccfsm_post_advance):
        (rs6000_legitimate_offset_address_p): Call
        legitimate_constant_pool_address_p in strict mode for LRA.
        (rs6000_legitimate_address_p): Ditto.
-       (legitimate_lo_sum_address_p): Add code for LRA.
-       Use lra_in_progress.
+       (legitimate_lo_sum_address_p): Add code for LRA.  Use lra_in_progress.
        (rs6000_emit_move): Add LRA version of code to generate load/store
        of SDmode values.
        (rs6000_secondary_memory_needed_mode): New.
        (rs6000_secondary_reload_class): Return NO_REGS for LRA for
        constants, memory, and FP registers.
        (rs6000_lra_p): New.
-       * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): New
-       macro.
+       * config/rs6000/rs6000.h (SECONDARY_MEMORY_NEEDED_MODE): New macro.
        * config/rs6000/rs6000.opt (mlra): New option.
        * lra-spills.c (lra_final_code_change): Remove useless move insns.
 
 2013-10-25  Eric Botcazou  <ebotcazou@adacore.com>
 
        PR rtl-optimization/58831
-       * alias.c (init_alias_analysis): At the beginning of each iteration, set
-       the reg_seen[N] bit if static_reg_base_value[N] is non-null.
+       * alias.c (init_alias_analysis): At the beginning of each iteration,
+       set the reg_seen[N] bit if static_reg_base_value[N] is non-null.
 
 2013-10-25  Eric Botcazou  <ebotcazou@adacore.com>
 
index 3131efd2b5ccf7f8ebdd78d43395468a54365a5b..5a2597b01abe197a8ebd822f8e0632ef10f00282 100644 (file)
@@ -42020,51 +42020,54 @@ ix86_bnd_prefixed_insn_p (rtx insn ATTRIBUTE_UNUSED)
   return false;
 }
 
+/* Calculate integer abs() using only SSE2 instructions.  */
+
 void
-ix86_expand_sse2_abs (rtx op0, rtx op1)
+ix86_expand_sse2_abs (rtx target, rtx input)
 {
-  enum machine_mode mode = GET_MODE (op0);
-  rtx tmp0, tmp1;
+  enum machine_mode mode = GET_MODE (target);
+  rtx tmp0, tmp1, x;
 
   switch (mode)
     {
       /* For 32-bit signed integer X, the best way to calculate the absolute
         value of X is (((signed) X >> (W-1)) ^ X) - ((signed) X >> (W-1)).  */
       case V4SImode:
-       tmp0 = expand_simple_binop (mode, ASHIFTRT, op1,
+       tmp0 = expand_simple_binop (mode, ASHIFTRT, input,
                                    GEN_INT (GET_MODE_BITSIZE
-                                                (GET_MODE_INNER (mode)) - 1),
+                                            (GET_MODE_INNER (mode)) - 1),
                                    NULL, 0, OPTAB_DIRECT);
-       if (tmp0)
-         tmp1 = expand_simple_binop (mode, XOR, op1, tmp0,
-                                     NULL, 0, OPTAB_DIRECT);
-       if (tmp0 && tmp1)
-         expand_simple_binop (mode, MINUS, tmp1, tmp0,
-                              op0, 0, OPTAB_DIRECT);
+       tmp1 = expand_simple_binop (mode, XOR, tmp0, input,
+                                   NULL, 0, OPTAB_DIRECT);
+       x = expand_simple_binop (mode, MINUS, tmp1, tmp0,
+                                target, 0, OPTAB_DIRECT);
        break;
 
       /* For 16-bit signed integer X, the best way to calculate the absolute
         value of X is max (X, -X), as SSE2 provides the PMAXSW insn.  */
       case V8HImode:
-       tmp0 = expand_unop (mode, neg_optab, op1, NULL_RTX, 0);
-       if (tmp0)
-         expand_simple_binop (mode, SMAX, op1, tmp0, op0, 0,
-                              OPTAB_DIRECT);
+       tmp0 = expand_unop (mode, neg_optab, input, NULL_RTX, 0);
+
+       x = expand_simple_binop (mode, SMAX, tmp0, input,
+                                target, 0, OPTAB_DIRECT);
        break;
 
       /* For 8-bit signed integer X, the best way to calculate the absolute
         value of X is min ((unsigned char) X, (unsigned char) (-X)),
         as SSE2 provides the PMINUB insn.  */
       case V16QImode:
-       tmp0 = expand_unop (mode, neg_optab, op1, NULL_RTX, 0);
-       if (tmp0)
-         expand_simple_binop (V16QImode, UMIN, op1, tmp0, op0, 0,
-                              OPTAB_DIRECT);
+       tmp0 = expand_unop (mode, neg_optab, input, NULL_RTX, 0);
+
+       x = expand_simple_binop (V16QImode, UMIN, tmp0, input,
+                                target, 0, OPTAB_DIRECT);
        break;
 
       default:
-       break;
+       gcc_unreachable ();
     }
+
+  if (x != target)
+    emit_move_insn (target, x);
 }
 
 /* Expand an insert into a vector register through pinsr insn.
index 2e5642bc5c68555004a1bdaa3003cc92bc9b5e1b..68f93f4e027199208c5e076b593407d58b0158b3 100644 (file)
@@ -1,6 +1,6 @@
 2013-10-31  Edward Smith-Rowland  <3dw4rd@verizon.net>
 
-        Implement C++14 digit separators.
+       Implement C++14 digit separators.
        * g++.dg/cpp1y/digit-sep.C: New.
        * g++.dg/cpp1y/digit-sep-neg.C: New.
        * g++.dg/cpp1y/digit-sep-cxx11-neg.C: New.
        2013-10-18  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/58466
-The Velvet Underground and Nico Full album vinyl LP
-vinylanalog vinylanalog·13 videos
-581
-150,561
-Like 1,087     Dislike 6
-
-Published on Jun 18, 2013
-
-The Velvet Underground and Nico legendary debut record produced by Andy Warhol (1967) presented in a non-modified recording of Verve V6-5008 vinyl LP. All efforts were made to realistically reproduce the natural vinyl stereo LP sound, so record levels were restrained and album noise is present.
-
-NOTE: THIS VIDEO IS FOR EDUCATION PURPOSES. ANY AND ALL COPYRIGHTS BELONG TO THE RIGHTFUL ARTISTS AND OWNERS.
-
-
        * g++.dg/cpp0x/variadic145.C: New.
 
        * g++.dg/cpp0x/sfinae49.C: New.
@@ -80,7 +67,7 @@ NOTE: THIS VIDEO IS FOR EDUCATION PURPOSES. ANY AND ALL COPYRIGHTS BELONG TO THE
 
 2013-10-30  Mikael Pettersson  <mikpe@it.uu.se>
 
-       PR rtl-optimization/58369
+       PR rtl-optimization/58369
        * g++.dg/torture/pr58369.C: New test.
 
 2013-10-30  Tobias Burnus  <burnus@net-b.de>
@@ -133,7 +120,7 @@ NOTE: THIS VIDEO IS FOR EDUCATION PURPOSES. ANY AND ALL COPYRIGHTS BELONG TO THE
        * gcc.dg/ira-shrinkwrap-prep-2.c: Likewise.
 
 2013-10-29  Andrew Pinski <apinski@cavium.com>
-            Zhenqiang Chen  <zhenqiang.chen@linaro.org>
+           Zhenqiang Chen  <zhenqiang.chen@linaro.org>
 
        * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: New test case.
        * gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c: New test case.
@@ -2429,6 +2416,7 @@ NOTE: THIS VIDEO IS FOR EDUCATION PURPOSES. ANY AND ALL COPYRIGHTS BELONG TO THE
 
 2013-08-08  Richard Sandiford  <rdsandiford@googlemail.com>
 
+       PR rtl-optimization/58079
        * gcc.dg/torture/pr58079.c: New test.
 
 2013-08-07  Eric Botcazou  <ebotcazou@adacore.com>