diff options
author | Uros Bizjak <uros@gcc.gnu.org> | 2013-10-31 19:37:29 +0100 |
---|---|---|
committer | Uros Bizjak <uros@gcc.gnu.org> | 2013-10-31 19:37:29 +0100 |
commit | e5ccdfcd51ccbd0c9353f94f73bce18d42adbaac (patch) | |
tree | 3f4deea604524913db4766b044ac517245f03376 /gcc | |
parent | 5e5f34bf635888199217753e461cfea3bb8ab390 (diff) | |
download | gcc-e5ccdfcd51ccbd0c9353f94f73bce18d42adbaac.zip gcc-e5ccdfcd51ccbd0c9353f94f73bce18d42adbaac.tar.gz gcc-e5ccdfcd51ccbd0c9353f94f73bce18d42adbaac.tar.bz2 |
i386.c (ix86_expand_sse2_abs): Rename function arguments.
* 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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 65 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 43 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 20 |
3 files changed, 58 insertions, 70 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c2e139f..48a6aab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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> @@ -131,9 +137,8 @@ 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> @@ -162,9 +167,8 @@ 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. @@ -198,10 +202,8 @@ (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. @@ -354,7 +356,8 @@ 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> @@ -391,11 +394,10 @@ 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> @@ -489,7 +491,7 @@ (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 @@ -898,8 +900,7 @@ (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> @@ -927,13 +928,13 @@ * 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> @@ -1050,8 +1051,7 @@ 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 @@ -1213,7 +1213,6 @@ (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): @@ -1310,8 +1309,7 @@ (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. @@ -1319,8 +1317,7 @@ (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. @@ -1379,8 +1376,8 @@ 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> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 3131efd..5a2597b 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -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. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2e5642b..68f93f4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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. @@ -29,19 +29,6 @@ 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> |