1. 11 Nov, 2015 18 commits
    • Undo delay slot filling and use compact branches in selected cases. · dcfe3c8f
      gcc/
      	* config/mips/mips.c (mips_breakable_sequence_p): New function.
      	(mips_break_sequence): New function. 
      	(mips_reorg_process_insns) Use them. Use compact branches in selected
                situations.
          
      gcc/testsuite/
              * gcc.target/mips/split-ds-sequence.c: New test.
      
      From-SVN: r230160
      Simon Dardis committed
    • Fix whitespace+typo from "Share code from fold_array_ctor_reference with fold." · c08de514
      	* fold-const.c (get_array_ctor_element_at_index): Fix whitespace, typo.
      
      From-SVN: r230159
      Alan Lawrence committed
    • [ARM] PR67305, tighten neon_vector_mem_operand on eliminable registers · 03f39145
      2015-11-11  Jiong Wang  <jiong.wang@arm.com>
      	    Jim Wilson  <wilson@gcc.gnu.org>
      
      	PR target/67305
      	* config/arm/arm.md (neon_vector_mem_operand): Return FALSE if strict
      	be true and eliminable registers mentioned.
      
      
      Co-Authored-By: Jim Wilson <wilson@gcc.gnu.org>
      
      From-SVN: r230158
      Jiong Wang committed
    • arc-common.c (arc_handle_option): Handle ARCv2 options. · f50bb868
      2015-11-11  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* common/config/arc/arc-common.c (arc_handle_option): Handle ARCv2
      	options.
      	* config/arc/arc-opts.h: Add ARCv2 CPUs.
      	* config/arc/arc-protos.h (arc_secondary_reload_conv): Prototype.
      	* config/arc/arc.c (arc_secondary_reload): Handle subreg (reg)
      	situation, and store instructions with large offsets.
      	(arc_secondary_reload_conv): New function.
      	(arc_init): Add ARCv2 options.
      	(arc_conditional_register_usage): Select the proper register usage
      	for ARCv2 processors.
      	(arc_handle_interrupt_attribute): ILINK2 is only valid for ARCv1
      	architecture.
      	(arc_compute_function_type): Likewise.
      	(arc_print_operand): Handle new ARCv2 punctuation characters.
      	(arc_return_in_memory): ARCv2 ABI returns in registers up to 16
      	bytes.
      	(workaround_arc_anomaly, arc_asm_insn_p, arc_loop_hazard): New
      	function.
      	(arc_reorg, arc_hazard): Use it.
      	* config/arc/arc.h (TARGET_CPU_CPP_BUILTINS): Define __HS__ and
      	__EM__.
      	(ASM_SPEC): Add ARCv2 options.
      	(TARGET_NORM): ARC HS has norm instructions by default.
      	(TARGET_OPTFPE): Use optimized floating point emulation for ARC
      	HS.
      	(TARGET_AT_DBR_CONDEXEC): Only for ARC600 family.
      	(TARGET_EM, TARGET_HS, TARGET_V2, TARGET_MPYW, TARGET_MULTI):
      	Define.
      	(SIGNED_INT16, TARGET_MPY, TARGET_ARC700_MPY, TARGET_ANY_MPY):
      	Likewise.
      	(TARGET_ARC600_FAMILY, TARGET_ARCOMPACT_FAMILY): Likewise.
      	(TARGET_LP_WR_INTERLOCK): Likewise.
      	* config/arc/arc.md
      	(commutative_binary_mult_comparison_result_used, movsicc_insn)
      	(mulsi3, mulsi3_600_lib, mulsidi3, mulsidi3_700, mulsi3_highpart)
      	(umulsi3_highpart_i, umulsi3_highpart_int, umulsi3_highpart)
      	(umulsidi3, umulsidi3_700, cstoresi4, simple_return, p_return_i):
      	Use it for ARCv2.
      	(mulhisi3, mulhisi3_imm, mulhisi3_reg, umulhisi3, umulhisi3_imm)
      	(umulhisi3_reg, umulhisi3_reg, mulsi3_v2, nopv, bswapsi2)
      	(prefetch, divsi3, udivsi3 modsi3, umodsi3, arcset, arcsetltu)
      	(arcsetgeu, arcsethi, arcsetls, reload_*_load, reload_*_store)
      	(extzvsi): New pattern.
      	* config/arc/arc.opt: New ARCv2 options.
      	* config/arc/arcEM.md: New file.
      	* config/arc/arcHS.md: Likewise.
      	* config/arc/constraints.md (C3p): New constraint, accepts 1 and 2
      	values.
      	(Cm2): A signed 9-bit integer constant constraint.
      	(C62): An unsigned 6-bit integer constant constraint.
      	(C16): A signed 16-bit integer constant constraint.
      	* config/arc/predicates.md (mult_operator): Add ARCv2 processort.
      	(short_const_int_operand): New predicate.
      	* config/arc/t-arc-newlib: Add ARCv2 multilib options.
      	* doc/invoke.texi: Add documentation for -mcpu=<archs/arcem>
      	-mcode-density and -mdiv-rem.
      
      From-SVN: r230156
      Claudiu Zissulescu committed
    • Fix typo. · 9e0c852b
      gcc/
      	* config/i386/i386.c (m_SKYLAKE_AVX512): Fix typo.
      
      From-SVN: r230155
      Julia Koval committed
    • Fix target arch attribute for Skylake. · 28746a50
      gcc/
      	* config/i386/i386.c: Handle "skylake" and
      	"skylake-avx512".
      
      gcc/testsuite/
      	* g++.dg/ext/mv16.C: New functions.
      
      From-SVN: r230153
      Julia Koval committed
    • Fix various memory leaks · c8189787
      	* gimple-ssa-strength-reduction.c (create_phi_basis):
      	Use auto_vec.
      	* passes.c (release_dump_file_name): New function.
      	(pass_init_dump_file): Used from this function.
      	(pass_fini_dump_file): Likewise.
      	* tree-sra.c (convert_callers_for_node): Use xstrdup_for_dump.
      	* var-tracking.c (vt_initialize): Use pool_allocator.
      
      From-SVN: r230152
      Martin Liska committed
    • dp-hack.h: Add support for ARCHS. · c0ab1970
      2015-11-11  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/dp-hack.h: Add support for ARCHS.
      	* config/arc/ieee-754/divdf3.S: Likewise.
      	* config/arc/ieee-754/divsf3-stdmul.S: Likewise.
      	* config/arc/ieee-754/muldf3.S: Likewise.
      	* config/arc/ieee-754/mulsf3.S: Likewise
      	* config/arc/lib1funcs.S: Likewise
      	* config/arc/gmon/dcache_linesz.S: Don't read the build register
      	for ARCv2 cores.
      	* config/arc/gmon/profil.S (__profil, __profil_irq): Don't profile
      	for ARCv2 cores.
      	* config/arc/ieee-754/arc-ieee-754.h (MPYHU, MPYH): Define.
      	* config/arc/t-arc700-uClibc: Remove hard selection for ARC 700
      	cores.
      
      From-SVN: r230151
      Claudiu Zissulescu committed
    • [Patch] PR tree-optimization/68234 Improve range info for loop Phi node · 35e2b6e1
      2015-11-11  Richard Biener  <rguenth@gcc.gnu.org>
      	    Jiong Wang      <jiong.wang@arm.com>
      gcc/
        PR tree-optimization/68234
        * tree-vrp.c (vrp_visit_phi_node): Extend SCEV check to those loop PHI
        node which estimiated to be VR_VARYING initially.
      
      gcc/testsuite/
        * gcc.dg/tree-ssa/pr68234.c: New testcase. 
      
      
      Co-Authored-By: Jiong Wang <jiong.wang@arm.com>
      
      From-SVN: r230150
      Richard Biener committed
    • Tighten up checks when tying chains. · 394b24ea
      gcc/
      	* regname.c (scan_rtx_reg): Check the matching number of consecutive
      	registers when tying chains.
      	(build_def_use): Move terminated_this_insn earlier in the function.
      
      From-SVN: r230149
      Robert Suchanek committed
    • re PR fortran/67826 (gcc/fortran/openmp.c:1808: bad test ?) · 6eef39f1
      2015-11-11  Dominique d'Humieres <dominiq@lps.ens.fr>
      
      	PR fortran/67826
      	* openmp.c (gfc_omp_udr_find): Fix typo.
      
      From-SVN: r230148
      Dominique d'Humieres committed
    • re PR libstdc++/64651 (std::rethrow_exception not found by ADL) · 832ca6ac
      	PR libstdc++/64651
      	* libsupc++/exception_ptr.h (rethrow_exception): Add using-declaration
      	to __exception_ptr namespace.
      	* testsuite/18_support/exception_ptr/rethrow_exception.cc: Test ADL.
      	Remove unnecessary test variables.
      
      From-SVN: r230147
      Jonathan Wakely committed
    • gcc: configure: fix test == bashisms · 9a557138
      From-SVN: r230146
      Mike Frysinger committed
    • aix.h (TARGET_OS_AIX_CPP_BUILTINS): Add cpu and machine asserts. · f83cab84
      * config/rs6000/aix.h (TARGET_OS_AIX_CPP_BUILTINS): Add cpu and
      machine asserts.  Update defines for 64 bit.
      
      From-SVN: r230145
      David Edelsohn committed
    • [ARM] PR63870 Remove error for invalid lane numbers · e68ffe57
      2015-11-11  Charles Baylis  <charles.baylis@linaro.org>
      
      	PR target/63870
      	* config/arm/neon.md (neon_vld1_lane<mode>): Remove error for invalid
      	lane number.
      	(neon_vst1_lane<mode>): Likewise.
      	(neon_vld2_lane<mode>): Likewise.
      	(neon_vst2_lane<mode>): Likewise.
      	(neon_vld3_lane<mode>): Likewise.
      	(neon_vst3_lane<mode>): Likewise.
      	(neon_vld4_lane<mode>): Likewise.
      	(neon_vst4_lane<mode>): Likewise.
      
      From-SVN: r230144
      Charles Baylis committed
    • [ARM] PR63870 Mark lane indices of vldN/vstN with appropriate qualifier · 22f9db64
      2015-11-11  Charles Baylis  <charles.baylis@linaro.org>
      
      	PR target/63870
      	* config/arm/arm-builtins.c: (arm_load1_qualifiers) Use
      	qualifier_struct_load_store_lane_index.
      	(arm_storestruct_lane_qualifiers) Likewise.
      	* config/arm/neon.md: (neon_vld1_lane<mode>) Reverse lane numbers for
      	big-endian.
      	(neon_vst1_lane<mode>) Likewise.
      	(neon_vld2_lane<mode>) Likewise.
      	(neon_vst2_lane<mode>) Likewise.
      	(neon_vld3_lane<mode>) Likewise.
      	(neon_vst3_lane<mode>) Likewise.
      	(neon_vld4_lane<mode>) Likewise.
      	(neon_vst4_lane<mode>) Likewise.
      
      From-SVN: r230143
      Charles Baylis committed
    • [ARM] PR63870 Add qualifiers for NEON builtins · 2f7d18dd
      2015-11-11  Charles Baylis  <charles.baylis@linaro.org>
      
      	PR target/63870
      	* config/arm/arm-builtins.c (enum arm_type_qualifiers): New enumerator
      	qualifier_struct_load_store_lane_index.
      	(builtin_arg): New enumerator NEON_ARG_STRUCT_LOAD_STORE_LANE_INDEX.
      	(arm_expand_neon_args): New parameter. Remove ellipsis. Handle NEON
      	argument qualifiers.
      	(arm_expand_neon_builtin): Handle new NEON argument qualifier.
      	* config/arm/arm.h (NEON_ENDIAN_LANE_N): New macro.
      
      From-SVN: r230142
      Charles Baylis committed
    • Daily bump. · 493b929a
      From-SVN: r230141
      GCC Administrator committed
  2. 10 Nov, 2015 22 commits
    • nvptx.opt (moptimize): New flag. · dba619f3
      	* config/nvptx/nvptx.opt (moptimize): New flag.
      	* config/nvptx/nvptx.c (nvptx_option_override): Set nvptx_optimize
      	default.
      	(nvptx_optimize_inner): New.
      	(nvptx_process_pars): Call it when optimizing.
      	* doc/invoke.texi (Nvidia PTX Options): Document -moptimize.
      
      From-SVN: r230137
      Nathan Sidwell committed
    • rs6000.c (rs6000_secondary_reload_direct_move): Remove redundant code. · 43ee07b7
      2015-11-10  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
      
      	* config/rs6000/rs6000.c (rs6000_secondary_reload_direct_move):
      	Remove redundant code.
      
      From-SVN: r230136
      Bill Schmidt committed
    • libgo: use Solaris sendfile lib, fix Solaris _in6_addr_t fields · 88cf4de8
          
          Before Solaris 12 the sendfile function is found in -lsendfile, so look
          for it there.
          
          Solaris 12 adds some more types that use _in6_addr_t, that need to be
          edited in mksysinfo.
          
          Patch by Rainer Orth.
          
          Reviewed-on: https://go-review.googlesource.com/16779
      
      From-SVN: r230132
      Ian Lance Taylor committed
    • [PATCH] Fix minor fallout from operand_address changes · 732ea6d1
      2015-11-10  Jeff Law  <law@redhat.com>
      
      	* config/ft32/ft32.c (ft32_print_operand): Supply mode to
      	call to output_address.
      	* config/moxie/moxie.c (moxie_print_operand_address): Similarly.
      	Add unnamed machine_mode argument.
      
      From-SVN: r230130
      Jeff Law committed
    • config.gcc (powerpc*-*-*, [...]): Add power9 to hosts that default to 64-bit. · 1840c953
      2015-11-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config.gcc (powerpc*-*-*, rs6000*-*-*): Add power9 to hosts that
      	default to 64-bit.
      
      
      Co-Authored-By: Peter Bergner <bergner@vnet.ibm.com>
      
      From-SVN: r230123
      Michael Meissner committed
    • re PR go/68255 (cgo-generated constructor not being called) · ea5c2003
      	PR go/68255
          cmd/go: always use --whole-archive for gccgo packages
          
          This is a backport of https://golang.org/cl/16775.
          
          This is, in effect, what the gc toolchain does.  It fixes cases where Go
          code refers to a C global variable; without this, if the global variable
          was the only thing visible in the C code, the generated cgo file might
          not get pulled in from the archive, leaving the Go variable
          uninitialized.
          
          This was reported against gccgo as https://gcc.gnu.org/PR68255 .
          
          Reviewed-on: https://go-review.googlesource.com/16778
      
      From-SVN: r230120
      Ian Lance Taylor committed
    • i386.md (*movabs<mode>_1): Add explicit size directives for -masm=intel. · c5a237e9
      	* config/i386/i386.md (*movabs<mode>_1): Add explicit
      	size directives for -masm=intel.
      	(*movabs<mode>_2): Ditto.
      
      From-SVN: r230119
      Uros Bizjak committed
    • i386.c (ix86_print_operand): Remove dead code that tried to avoid (%rip) for call operands. · 41d9ec3c
      	* config/i386/i386.c (ix86_print_operand): Remove dead code that
      	tried to avoid (%rip) for call operands.
      
      	* config/i386/i386.c (ix86_print_operand_address_as): Add no_rip
      	argument.  Do not use RIP relative addressing when no_rip is set.
      	(ix86_print_operand): Update call to ix86_print_operand_address_as.
      	(ix86_print_operand_address): Ditto.
      	* config/i386/i386.md (*movabs<mode>_1): Use %P modifier for
      	absolute movabs operand 0.  Add square braces for -masm=intel.
      	(*movabs<mode>_2): Ditto for operand 1.
      
      From-SVN: r230117
      Uros Bizjak committed
    • [ARM] Fix costing of vmul+vcvt combine pattern · 6a9ee02f
      	* config/arm/arm.c (arm_new_rtx_costs, FIX case): Handle
      	combine_vcvtf2i pattern.
      
      From-SVN: r230116
      Kyrylo Tkachov committed
    • [ARM][cleanup] Remove uses of CONST_DOUBLE_HIGH/LOW · aad146c3
      	* config/arm/arm.c (neon_valid_immediate): Remove integer
      	CONST_DOUBLE handling.  It should never occur.
      
      From-SVN: r230115
      Kyrylo Tkachov committed
    • [AArch64] Move iterators from atomics.md to iterators.md · d81cb613
      	* config/aarch64/atomics.md (unspecv): Move to iterators.md.
      	(ATOMIC_LDOP): Likewise.
      	(atomic_ldop): Likewise.
      	* config/aarch64/iterators.md (unspecv): Moved from atomics.md.
      	(ATOMIC_LDOP): Likewise.
      	(atomic_ldop): Likewise.
      
      From-SVN: r230114
      Matthew Wahab committed
    • Fix return type of heterogeneous find for sets · d4a9dffb
      	PR libstdc++/68190
      	* include/bits/stl_multiset.h (multiset::find): Fix return types.
      	* include/bits/stl_set.h (set::find): Likewise.
      	* testsuite/23_containers/map/operations/2.cc: Test find return types.
      	* testsuite/23_containers/multimap/operations/2.cc: Likewise.
      	* testsuite/23_containers/multiset/operations/2.cc: Likewise.
      	* testsuite/23_containers/set/operations/2.cc: Likewise.
      
      From-SVN: r230113
      Jonathan Wakely committed
    • Update C++17 library implementation status · 60baa188
      	* doc/xml/manual/status_cxx2017.xml: Update.
      	* doc/html/*: Regenerate.
      
      From-SVN: r230108
      Jonathan Wakely committed
    • firstprivate-1.c: Remove inadvertent commit. · d350c40c
      	* testsuite/libgomp.oacc-c-c++-common/firstprivate-1.c: Remove
      	inadvertent commit.
      
      From-SVN: r230107
      Nathan Sidwell committed
    • Enhance pool allocator · 8bd37a2e
      	* alloc-pool.h (allocate_raw): New function.
      	(operator new (size_t, object_allocator<T> &a)): Use the
      	function instead of object_allocator::allocate).
      
      From-SVN: r230105
      Martin Liska committed
    • sse.md (HALFMASKMODE): New attribute. · bea40885
      gcc/
      
      	* config/i386/sse.md (HALFMASKMODE): New attribute.
      	(DOUBLEMASKMODE): New attribute.
      	(vec_pack_trunc_qi): New.
      	(vec_pack_trunc_<mode>): New.
      	(vec_unpacks_lo_hi): New.
      	(vec_unpacks_lo_si): New.
      	(vec_unpacks_lo_di): New.
      	(vec_unpacks_hi_hi): New.
      	(vec_unpacks_hi_<mode>): New.
      
      gcc/testsuite/
      
      	* gcc.target/i386/mask-pack.c: New test.
      	* gcc.target/i386/mask-unpack.c: New test.
      
      From-SVN: r230104
      Ilya Enkovich committed
    • optabs.c (expand_binop_directly): Allow scalar mode for vec_pack_trunc_optab. · e6f5c25d
      gcc/
      
      	* optabs.c (expand_binop_directly): Allow scalar mode for
      	vec_pack_trunc_optab.
      	* tree-vect-loop.c (vect_determine_vectorization_factor): Skip
      	boolean vector producers from pattern sequence when computing VF.
      	* tree-vect-patterns.c (vect_vect_recog_func_ptrs) Add
      	vect_recog_mask_conversion_pattern.
      	(search_type_for_mask): Choose the smallest
      	type if different size types are mixed.
      	(build_mask_conversion): New.
      	(vect_recog_mask_conversion_pattern): New.
      	(vect_pattern_recog_1): Allow scalar mode for boolean vectype.
      	* tree-vect-stmts.c (vectorizable_mask_load_store): Support masked
      	load with pattern.
      	(vectorizable_conversion): Support boolean vectors.
      	(free_stmt_vec_info): Allow patterns for statements with no lhs.
      	* tree-vectorizer.h (NUM_PATTERNS): Increase to 14.
      
      From-SVN: r230103
      Ilya Enkovich committed
    • i386-protos.h (ix86_expand_sse_movcc): New. · f79fe06f
      gcc/
      
      2015-11-10  Ilya Enkovich  <enkovich.gnu@gmail.com>
      
      	* config/i386/i386-protos.h (ix86_expand_sse_movcc): New.
      	* config/i386/i386.c (ix86_expand_sse_movcc): Make public.
      	Cast mask to FP mode if required.
      	* config/i386/sse.md (vcond_mask_<mode><avx512fmaskmodelower>): New.
      	(vcond_mask_<mode><avx512fmaskmodelower>): New.
      	(vcond_mask_<mode><sseintvecmodelower>): New.
      	(vcond_mask_<mode><sseintvecmodelower>): New.
      	(vcond_mask_v2div2di): New.
      	(vcond_mask_<mode><sseintvecmodelower>): New.
      	(vcond_mask_<mode><sseintvecmodelower>): New.
      
      From-SVN: r230102
      Ilya Enkovich committed
    • optabs-query.h (get_vcond_mask_icode): New. · a414c77f
      gcc/
      
      2015-11-10  Ilya Enkovich  <enkovich.gnu@gmail.com>
      
      	* optabs-query.h (get_vcond_mask_icode): New.
      	* optabs-tree.c (expand_vec_cond_expr_p): Use
      	get_vcond_mask_icode for VEC_COND_EXPR with mask.
      	* optabs.c (expand_vec_cond_mask_expr): New.
      	(expand_vec_cond_expr): Use get_vcond_mask_icode
      	when possible.
      	* optabs.def (vcond_mask_optab): New.
      	* tree-vect-patterns.c (vect_recog_bool_pattern): Don't
      	generate redundant comparison for COND_EXPR.
      	* tree-vect-stmts.c (vect_is_simple_cond): Allow SSA_NAME
      	as a condition.
      	(vectorizable_condition): Likewise.
      	* tree-vect-slp.c (vect_get_and_check_slp_defs): Allow
      	cond_exp with no embedded comparison.
      	(vect_build_slp_tree_1): Likewise.
      
      From-SVN: r230101
      Ilya Enkovich committed
    • sse.md (maskload<mode>): Rename to ... · 1ab8a1b1
      2015-11-10  Ilya Enkovich  <enkovich.gnu@gmail.com>
      
      	* config/i386/sse.md (maskload<mode>): Rename to ...
      	(maskload<mode><sseintvecmodelower>): ... this.
      	(maskstore<mode>): Rename to ...
      	(maskstore<mode><sseintvecmodelower>): ... this.
      	(maskload<mode><avx512fmaskmodelower>): New.
      	(maskstore<mode><avx512fmaskmodelower>): New.
      
      From-SVN: r230100
      Ilya Enkovich committed
    • internal-fn.c (expand_MASK_LOAD): Adjust to maskload optab changes. · 045c1278
      gcc/
      
      	* internal-fn.c (expand_MASK_LOAD): Adjust to maskload optab changes.
      	(expand_MASK_STORE): Adjust to maskstore optab changes.
      	* optabs-query.c (can_vec_mask_load_store_p): Add MASK_MODE arg.
      	 Adjust to maskload, maskstore optab changes.
      	* optabs-query.h (can_vec_mask_load_store_p): Add MASK_MODE arg.
      	* optabs.def (maskload_optab): Transform into convert optab.
      	(maskstore_optab): Likewise.
      	* tree-if-conv.c (ifcvt_can_use_mask_load_store): Adjust to
      	can_vec_mask_load_store_p signature change.
      	(predicate_mem_writes): Use boolean mask.
      	* tree-vect-stmts.c (vectorizable_mask_load_store): Adjust to
      	can_vec_mask_load_store_p signature change.  Allow invariant masks.
      	(vectorizable_operation): Ignore type precision for boolean vectors.
      
      gcc/testsuite/
      
      	* gcc.target/i386/avx2-vec-mask-bit-not.c: New test.
      
      From-SVN: r230099
      Ilya Enkovich committed
    • expr.c (do_store_flag): Use expand_vec_cmp_expr for mask results. · 42fd8198
      gcc/
      
      	* expr.c (do_store_flag): Use expand_vec_cmp_expr for mask results.
      	(const_vector_mask_from_tree): New.
      	(const_vector_from_tree): Use const_vector_mask_from_tree
      	for boolean vectors.
      	* optabs-query.h (get_vec_cmp_icode): New.
      	* optabs-tree.c (expand_vec_cmp_expr_p): New.
      	* optabs-tree.h (expand_vec_cmp_expr_p): New.
      	* optabs.c (vector_compare_rtx): Add OPNO arg.
      	(expand_vec_cond_expr): Adjust to vector_compare_rtx change.
      	(expand_vec_cmp_expr): New.
      	* optabs.def (vec_cmp_optab): New.
      	(vec_cmpu_optab): New.
      	* optabs.h (expand_vec_cmp_expr): New.
      	* tree-vect-generic.c (expand_vector_comparison): Add vector
      	comparison optabs check.
      	* tree-vect-loop.c (vect_determine_vectorization_factor):  Ignore mask
      	operations for VF.  Add mask type computation.
      	* tree-vect-stmts.c (get_mask_type_for_scalar_type): New.
      	(vectorizable_comparison): New.
      	(vect_analyze_stmt): Add vectorizable_comparison.
      	(vect_transform_stmt): Likewise.
      	(vect_init_vector): Support boolean vector invariants.
      	(vect_get_vec_def_for_operand): Add VECTYPE arg.
      	(vectorizable_condition): Directly provide vectype for invariants
      	used in comparison.
      	* tree-vectorizer.h (get_mask_type_for_scalar_type): New.
      	(enum vect_var_kind): Add vect_mask_var.
      	(enum stmt_vec_info_type): Add comparison_vec_info_type.
      	(vectorizable_comparison): New.
      	(vect_get_vec_def_for_operand): Add VECTYPE arg.
      	* tree-vect-data-refs.c (vect_get_new_vect_var): Support vect_mask_var.
      	(vect_create_destination_var): Likewise.
      	* tree-vect-patterns.c (check_bool_pattern): Check fails
      	if we can vectorize comparison directly.
      	(search_type_for_mask): New.
      	(vect_recog_bool_pattern): Support cases when bool pattern
      	check fails.
      	* tree-vect-slp.c (vect_build_slp_tree_1): Allow
      	comparison statements.
      	(vect_get_constant_vectors): Support boolean vector
      	constants.
      	* config/i386/i386-protos.h (ix86_expand_mask_vec_cmp): New.
      	(ix86_expand_int_vec_cmp): New.
      	(ix86_expand_fp_vec_cmp): New.
      	* config/i386/i386.c (ix86_expand_sse_cmp): Allow NULL for
      	op_true and op_false.
      	(ix86_int_cmp_code_to_pcmp_immediate): New.
      	(ix86_fp_cmp_code_to_pcmp_immediate): New.
      	(ix86_cmp_code_to_pcmp_immediate): New.
      	(ix86_expand_mask_vec_cmp): New.
      	(ix86_expand_fp_vec_cmp): New.
      	(ix86_expand_int_sse_cmp): New.
      	(ix86_expand_int_vcond): Use ix86_expand_int_sse_cmp.
      	(ix86_expand_int_vec_cmp): New.
      	(ix86_get_mask_mode): New.
      	(TARGET_VECTORIZE_GET_MASK_MODE): New.
      	* config/i386/sse.md (avx512fmaskmodelower): New.
      	(vec_cmp<mode><avx512fmaskmodelower>): New.
      	(vec_cmp<mode><sseintvecmodelower>): New.
      	(vec_cmpv2div2di): New.
      	(vec_cmpu<mode><avx512fmaskmodelower>): New.
      	(vec_cmpu<mode><sseintvecmodelower>): New.
      	(vec_cmpuv2div2di): New.
      
      gcc/testsuite/
      
      	* gcc.dg/vect/slp-cond-5.c: New test.
      
      From-SVN: r230098
      Ilya Enkovich committed