1. 17 May, 2019 1 commit
  2. 16 May, 2019 25 commits
    • compiler: add intrinsics for runtime/internal/sys functions · f6d67708
          
          runtime/internal/sys.Ctz32/64 and Bswap32/64 are currently
          implemented with compiler builtin functions. But if they are
          called from another package, the compiler does not know and
          therefore cannot turn them into compiler intrinsics. This CL
          makes the compiler recognize these functions and turn them into
          intrinsics directly, as the gc compiler does.
          
          This CL sets up a way for adding intrinsics in the compiler.
          More intrinsics will be added in later CLs.
          
          Also move the handling of runtime.getcallerpc/sp to the new way
          of generating intrinsics.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176917
      
      From-SVN: r271303
      Ian Lance Taylor committed
    • Remove incorrect assertion from filesystem::absolute · 71101282
      The assertion is wrong, it should be *s.end() == 0, but that's not
      allowed. Just remove it, but keep the comment.
      
      	* src/c++17/fs_ops.cc (absolute(const path&, error_code&))
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Remove bogus assertion.
      
      From-SVN: r271300
      Jonathan Wakely committed
    • re PR c++/90484 (ICE in equal_mem_array_ref_p at gcc/tree-ssa-scopedtables.c:550… · afc819e8
      re PR c++/90484 (ICE in equal_mem_array_ref_p at gcc/tree-ssa-scopedtables.c:550 since r270433 on i586)
      
      	PR c++/90484
      	* tree-ssa-scopedtables.c (equal_mem_array_ref_p): Don't assert that
      	sz0 is equal to sz1, instead return false in that case.
      
      From-SVN: r271299
      Jakub Jelinek committed
    • omp-low.c (lower_rec_input_clauses): If OMP_CLAUSE_IF has non-constant expression... · 4e65deef
      	* omp-low.c (lower_rec_input_clauses): If OMP_CLAUSE_IF
      	has non-constant expression, force sctx.lane and use two
      	argument IFN_GOMP_SIMD_LANE instead of single argument.
      	* tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't DCE
      	two argument IFN_GOMP_SIMD_LANE without lhs.
      	* tree-vectorizer.h (struct _loop_vec_info): Add simd_if_cond
      	member.
      	(LOOP_VINFO_SIMD_IF_COND, LOOP_REQUIRES_VERSIONING_FOR_SIMD_IF_COND):
      	Define.
      	(LOOP_REQUIRES_VERSIONING): Or in
      	LOOP_REQUIRES_VERSIONING_FOR_SIMD_IF_COND.
      	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
      	simd_if_cond.
      	(vect_analyze_loop_2): Punt if LOOP_VINFO_SIMD_IF_COND is constant 0.
      	* tree-vect-loop-manip.c (vect_loop_versioning): Add runtime check
      	from simd if clause if needed.
      
      	* gcc.dg/vect/vect-simd-1.c: New test.
      	* gcc.dg/vect/vect-simd-2.c: New test.
      	* gcc.dg/vect/vect-simd-3.c: New test.
      	* gcc.dg/vect/vect-simd-4.c: New test.
      
      From-SVN: r271298
      Jakub Jelinek committed
    • Implement sane variant converting constructor (P0608R3) · d069df01
      	* include/std/variant (__overload_set): Remove.
      	(_Arr): New helper.
      	(_Build_FUN): New class template to define a single FUN overload,
      	with specializations to prevent unwanted conversions, as per P0608R3.
      	(_Build_FUNs): New class template to build an overload set of FUN.
      	(_FUN_type): New alias template to perform overload resolution.
      	(__accepted_type): Use integer_constant base for failure case. Use
      	_FUN_type for successful case.
      	(variant::__accepted_index): Use _Tp instead of _Tp&&.
      	(variant::variant(_Tp&&)): Likewise.
      	(variant::operator=(_Tp&&)): Likewise.
      
      From-SVN: r271296
      Jonathan Wakely committed
    • Changes to std::variant to reduce code size · b62dcd16
      	* include/std/variant (_Variant_storage<false, _Types...>::_M_reset):
      	Replace raw visitation with a runtime check for the valueless state
      	and a non-raw visitor.
      	(_Variant_storage<false, _Types...>::_M_reset_impl): Remove.
      	(variant::index()): Remove branch.
      	(variant::swap(variant&)): Use valueless_by_exception() instead of
      	comparing the index to variant_npos, and add likelihood attribute.
      
      From-SVN: r271295
      Jonathan Wakely committed
    • tree-affine.c (expr_to_aff_combination): New function split out from... · 5120e0d8
      2019-05-16  Richard Biener  <rguenther@suse.de>
      
      	* tree-affine.c (expr_to_aff_combination): New function split
      	out from...
      	(tree_to_aff_combination): ... here.
      	(aff_combination_expand): Avoid building a GENERIC tree.
      
      From-SVN: r271294
      Richard Biener committed
    • gcc: move assemble_start_function / assemble_end_function to output_mi_thunk · f7430263
      Let backends call assemble_start_function after they have generated
      thunk function body so that a constant pool could be output if it is
      required. This may help backends to avoid implementing custom constant
      loading code specifically for the MI thunk and reuse existing
      functionality.
      
      gcc/
      2019-05-16  Max Filippov  <jcmvbkbc@gmail.com>
      
      	* cgraphunit.c (cgraph_node::expand_thunk): Remove
      	assemble_start_function and assemble_end_function calls.
      	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Call
      	assemble_start_function and assemble_end_function.
      	* config/arc/arc.c (arc_output_mi_thunk): Likewise.
      	* config/arm/arm.c (arm_output_mi_thunk): Likewise.
      	* config/bfin/bfin.c (bfin_output_mi_thunk): Likewise.
      	* config/c6x/c6x.c (c6x_output_mi_thunk): Likewise.
      	* config/cris/cris.c (cris_asm_output_mi_thunk): Likewise.
      	* config/csky/csky.c (csky_output_mi_thunk): Likewise.
      	* config/epiphany/epiphany.c (epiphany_output_mi_thunk): Likewise.
      	* config/frv/frv.c (frv_asm_output_mi_thunk): Likewise.
      	* config/i386/i386.c (x86_output_mi_thunk): Likewise.
      	* config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
      	* config/m68k/m68k.c (m68k_output_mi_thunk): Likewise.
      	* config/microblaze/microblaze.c (microblaze_asm_output_mi_thunk):
      	Likewise.
      	* config/mips/mips.c (mips_output_mi_thunk): Likewise.
      	* config/mmix/mmix.c (mmix_asm_output_mi_thunk): Likewise.
      	* config/mn10300/mn10300.c (mn10300_asm_output_mi_thunk): Likewise.
      	* config/nds32/nds32.c (nds32_asm_output_mi_thunk): Likewise.
      	* config/nios2/nios2.c (nios2_asm_output_mi_thunk): Likewise.
      	* config/or1k/or1k.c (or1k_output_mi_thunk): Likewise.
      	* config/pa/pa.c (pa_asm_output_mi_thunk): Likewise.
      	* config/riscv/riscv.c (riscv_output_mi_thunk): Likewise.
      	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
      	* config/s390/s390.c (s390_output_mi_thunk): Likewise.
      	* config/sh/sh.c (sh_output_mi_thunk): Likewise.
      	* config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
      	* config/spu/spu.c (spu_output_mi_thunk): Likewise.
      	* config/stormy16/stormy16.c (xstormy16_asm_output_mi_thunk):
      	Likewise.
      	* config/tilegx/tilegx.c (tilegx_output_mi_thunk): Likewise.
      	* config/tilepro/tilepro.c (tilepro_asm_output_mi_thunk): Likewise.
      	* config/vax/vax.c (vax_output_mi_thunk): Likewise.
      
      From-SVN: r271293
      Max Filippov committed
    • tree-ssa-alias.c (alias_stats): Add aliasing_component_refs_p_may_alias and… · 6727c729
      tree-ssa-alias.c (alias_stats): Add aliasing_component_refs_p_may_alias and aliasing_component_refs_p_no_alias.
      
      
      	* tree-ssa-alias.c (alias_stats): Add
      	aliasing_component_refs_p_may_alias and
      	aliasing_component_refs_p_no_alias.
      	(dump_alias_stats): Print aliasing_component_refs_p stats.
      	(aliasing_component_refs_p): Update stats.
      
      From-SVN: r271292
      Jan Hubicka committed
    • Replace _Equal_helper with simpler class template · eba20412
      By defining the new helper inside _Hashtable_base it doesn't need all
      the template parameters to be provided, and by making it only
      responsible for checking a possibly-cached hash code it only has to do
      one thing.  The caller can use the equality predicate itself instead of
      duplicating that in the helper template.
      
      	* include/bits/hashtable_policy.h (_Equal_helper): Remove.
      	(_Hashtable_base::_Equal_hash_code): Define new class template.
      	(_Hashtable_base::_M_equals): Use _Equal_hash_code instead of
      	_Equal_helper.
      
      From-SVN: r271291
      Jonathan Wakely committed
    • Change EBO accessors from static to non-static member functions · 1f6ea968
      	* include/bits/hashtable_policy.h (_Hashtable_ebo_helper::_S_get):
      	Replace with _M_get non-static member function.
      	(_Hashtable_ebo_helper::_S_cget): Replace with _M_cget non-static
      	member function.
      	(_Hash_code_base, _Local_iterator_base, _Hashtable_base):
      	(_Hashtable_alloc): Adjust to use non-static members of EBO helper.
      
      From-SVN: r271290
      Jonathan Wakely committed
    • Do not allow target_clones with alias attr (PR lto/90500). · a61b003f
      2019-05-16  Martin Liska  <mliska@suse.cz>
      
      	PR lto/90500
      	* multiple_target.c (expand_target_clones): Do not allow
      	target_clones being used with a symbol that is an alias.
      2019-05-16  Martin Liska  <mliska@suse.cz>
      
      	PR lto/90500
      	* gcc.target/i386/pr90500-1.c: New test.
      	* gcc.target/i386/pr90500-2.c: New test.
      
      From-SVN: r271289
      Martin Liska committed
    • tree-ssa-uninit: avoid ICE with BIT_AND_EXPR (PR 90394) · 74a96dd2
      2019-05-16  Vladislav Ivanishin  <vlad@ispras.ru>
      
      	PR tree-optimization/90394
      	* tree-ssa-uninit.c (is_pred_expr_subset_of): Potentially give false
      	positives rather than ICE for cases where (code2 == NE_EXPR
      	&& code1 == BIT_AND_EXPR).
      
      testsuite/
      	* gcc.dg/uninit-pr90394-1-gimple.c: New test.
      	* gcc.dg/uninit-pr90394.c: New test.
      
      From-SVN: r271287
      Vladislav Ivanishin committed
    • Remove unnecessary non-const accessors in hash table bases · 0bc229db
      The const accessors are OK (and arguably more correct) for most callers
      to use. The _M_swap functions that use the non-const overloads can just
      directly use the _S_get members of the EBO helpers.
      
      	* include/bits/hashtable_policy.h (_Hash_code_base::_M_swap): Use
      	_S_get accessors for members in EBO helpers.
      	(_Hash_code_base::_M_extract(), _Hash_code_base::_M_ranged_hash())
      	(_Hash_code_base::_M_h1(), _Hash_code_base::_M_h2()): Remove non-const
      	overloads.
      	(_Hashtable_base::_M_swap): Use _S_get accessors for members in EBO
      	helpers.
      	(_Hashtable_base::_M_eq()): Remove non-const overload.
      
      From-SVN: r271286
      Jonathan Wakely committed
    • re PR fortran/90329 (Incompatibility between gfortran and C lapack calls) · 4b8e35f1
      	PR fortran/90329
      	* tree-core.h (struct tree_decl_common): Document
      	decl_nonshareable_flag for PARM_DECLs.
      	* tree.h (DECL_HIDDEN_STRING_LENGTH): Define.
      	* calls.c (expand_call): Don't try tail call if caller
      	has any DECL_HIDDEN_STRING_LENGTH PARM_DECLs that are or might be
      	passed on the stack and callee needs to pass any arguments on the
      	stack.
      	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Use
      	else if instead of series of mutually exclusive ifs.  Handle
      	DECL_HIDDEN_STRING_LENGTH for PARM_DECLs.
      	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Likewise.
      
      	* trans-decl.c (create_function_arglist): Set
      	DECL_HIDDEN_STRING_LENGTH on hidden string length PARM_DECLs if
      	len is constant.
      
      From-SVN: r271285
      Jakub Jelinek committed
    • * lto-streamer.h (LTO_major_version): Bump to 9. · 86c23d93
      From-SVN: r271284
      Jakub Jelinek committed
    • re PR testsuite/90502 (gcc.dg/tree-ssa/vector-6.c FAILs) · 8c3f47fe
      2019-05-16  Richard Biener  <rguenther@suse.de>
      
      	PR testsuite/90502
      	* gcc.dg/tree-ssa/vector-6.c: Adjust for half of the
      	transforms happening earlier now.
      
      From-SVN: r271283
      Richard Biener committed
    • testsuite - improve check_effective_target_cet. · d695ae21
      In some cases the test using setssbsy was not enough to
      detemine support for the CET insns.  Adding -fcf-protection
      explicitly causes other insns to be emitted (e.g. endbr32/64)
      which are a more complete check.
      
      2019-05-16  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* lib/target-supports.exp (check_effective_target_cet): Add the
      	-fcf-protection flag to the build conditions.
      
      From-SVN: r271282
      Iain Sandoe committed
    • re PR tree-optimization/90106 (builtin sqrt() ignoring libm's sqrt call result) · 5486a996
      	PR tree-optimization/90106
      	* tree-call-cdce.c (shrink_wrap_one_built_in_call_with_conds): Add
      	new parameter as new internal function call, also move it to new
      	basic block.
      	(use_internal_fn): Pass internal function call to
      	shrink_wrap_one_built_in_call_with_conds.
      
      	gcc/testsuite
      	* gcc.dg/cdce1.c: Check tailcall code generation after cdce pass.
      	* gcc.dg/cdce2.c: Likewise.
      
      From-SVN: r271281
      Jun Ma committed
    • [RTEMS] Change multilibs for ARM · fd893bf1
      Account for Cortex-M3 Errata 602117.  The -mfix-cortex-m3-ldrd option is
      enabled by default, if -mcpu=cortex-m3 is used.
      
      gcc/
      
      	* config/arm/t-rtems: Replace ARMv7-M multilibs with Cortex-M
      	multilibs.
      
      From-SVN: r271280
      Sebastian Huber committed
    • re PR target/90424 (memcpy into vector builtin not optimized) · 1bf2a0b9
      2019-05-16  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/90424
      	* tree-ssa.c (non_rewritable_lvalue_p): Handle inserts from
      	aligned subvectors.
      	(execute_update_addresses_taken): Likewise.
      	* tree-cfg.c (verify_gimple_assign_ternary): Likewise.
      
      	* g++.target/i386/pr90424-1.C: New testcase.
      	* g++.target/i386/pr90424-2.C: Likewise.
      
      From-SVN: r271279
      Richard Biener committed
    • gimple-parser.c (c_parser_gimple_statement): Handle __BIT_INSERT. · adfe6e4b
      2019-05-16  Richard Biener  <rguenther@suse.de>
      
      	c/
      	* gimple-parser.c (c_parser_gimple_statement): Handle __BIT_INSERT.
      	(c_parser_gimple_unary_expression): Likewise.
      
      	* gimple-pretty-print.c (dump_ternary_rhs): Dump BIT_INSERT_EXPR
      	as __BIT_INSERT with -gimple.
      
      	* gcc.dg/gimplefe-40.c: Amend again.
      
      From-SVN: r271278
      Richard Biener committed
    • Add myself to MAINTAINERS. · f6b2daaf
      2019-05-16  Jun Ma  <junma@linux.alibaba.com>
      
      	* MAINTAINERS (Write After Approval): Add myself.
      
      From-SVN: r271277
      Jun Ma committed
    • compiler: improve escape analysis on interface conversions · e8e91b84
          
          If an interface does not escape, it doesn't need a heap
          allocation to hold the data (for non-direct interface type).
          This CL improves the escape analysis to track interface
          conversions, and reduces these allocations.
          
          Implicit interface conversions were mostly added late in the
          compilation pipeline, after the escape analysis. For the escape
          analysis to see them, we move the introduction of these
          conversions earlier, right before the escape analysis.
          
          Now that the compiler can generate interface conversions inlined,
          gcc/testsuite/go.test/test/nilptr2.go needs to be adjusted as in
          golang.org/cl/176579, so the use function does an actual use.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176459
      
      	* go.test/test/nilptr2.go: Change use function to actually do
      	something.
      
      From-SVN: r271276
      Cherry Zhang committed
    • Daily bump. · 92b8603c
      From-SVN: r271275
      GCC Administrator committed
  3. 15 May, 2019 14 commits
    • re PR middle-end/90478 (ICE in emit_case_dispatch_table at gcc/stmt.c:796) · 80c1c40a
      	PR middle-end/90478
      	* gcc.dg/tree-ssa/pr90478.c: Add empty dg-options.  Use long long type
      	instead of long.
      
      From-SVN: r271271
      Jakub Jelinek committed
    • omp-low.c (lower_rec_input_clauses): For if (0) or simdlen (1) set max_vf to 1. · fed2a43c
      	* omp-low.c (lower_rec_input_clauses): For if (0) or simdlen (1) set
      	max_vf to 1.
      	* omp-expand.c (expand_omp_simd): For if (0) or simdlen (1) clear
      	safelen_int and set loop->dont_vectorize.
      
      	* c-c++-common/gomp/simd8.c: New test.
      
      From-SVN: r271270
      Jakub Jelinek committed
    • re PR debug/90197 (Cannot step through simple loop at -O -g) · c42b72a7
      	PR debug/90197
      	* cp-gimplify.c (genericize_cp_loop): Emit a DEBUG_BEGIN_STMT
      	before the condition (or if missing or constant non-zero at the end
      	of the loop.  Emit a DEBUG_BEGIN_STMT before the increment expression
      	if any.  Don't call protected_set_expr_location on incr if it already
      	has a location.
      
      From-SVN: r271269
      Jakub Jelinek committed
    • Qualify calls in std::visit and std::visit<R> · e5d7010b
      	* include/std/variant (visit, visit<R>): Qualify calls to __do_visit.
      
      From-SVN: r271268
      Jonathan Wakely committed
    • CWG 2096 - constraints on literal unions. · 47805f57
      	* class.c (check_field_decls): Initialize booleans directly.  A union
      	is literal if at least one of its non-static data members is of
      	non-volatile literal type.
      
      	* g++.dg/cpp0x/literal-type1.C: New test.
      
      From-SVN: r271267
      Marek Polacek committed
    • Remove translation string markers · 193f2419
      C preprocessor definitions should not be translated.
      
      2019-05-15  Janne Blomqvist  <jb@gcc.gnu.org>
      
              * parse.c (gfc_parse_file): Remove translation string markers.
      
      From-SVN: r271261
      Janne Blomqvist committed
    • Allow opening file on multiple units · 0c15ebf1
      As of Fortran 2018 it's allowed to open the same file on multiple
      units.
      
      libgfortran/ChangeLog:
      
      2019-05-15  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/90461
              * io/open.c (new_unit): Don't check if the file is already open
      	for F2018.
      
      testsuite/ChangeLog:
      
      2019-05-15  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/90461
              * gfortran.dg/open_errors_2.f90: Add -std=f2008, adjust line number.
      	* gfortran.dg/open_errors_3.f90: New test.
      
      From-SVN: r271260
      Janne Blomqvist committed
    • i386-expand.c (ix86_split_idivmod): Rename signed_p argument to unsigned_p. · 40c81f84
      	* config/i386/i386-expand.c (ix86_split_idivmod): Rename
      	signed_p argument to unsigned_p.  Update all uses for changed polarity.
      	* config/i386/i386.md (u_bool): Handle DIV and UDIV RTXes.
      	(divmod splitters): Use u_bool macro in the call to ix86_split_idivmod.
      
      From-SVN: r271259
      Uros Bizjak committed
    • cp-tree.h (REFERENCE_VLA_OK): Remove. · 53f45e3c
      2019-05-15  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* cp-tree.h (REFERENCE_VLA_OK): Remove.
      	* lambda.c (build_capture_proxy): Remove use of the above.
      
      From-SVN: r271258
      Paolo Carlini committed
    • i386: Add tests for MMX intrinsic emulations with SSE · dc90cc8c
      Test MMX intrinsics with -msse2 in 32-bit mode and -msse2 -mno-mmx in
      64-bit mode.
      
      	PR target/89021
      	* gcc.target/i386/mmx-vals.h: New file.
      	* gcc.target/i386/sse2-mmx-2.c: Likewise.
      	* gcc.target/i386/sse2-mmx-3.c: Likewise.
      	* gcc.target/i386/sse2-mmx-4.c: Likewise.
      	* gcc.target/i386/sse2-mmx-5.c: Likewise.
      	* gcc.target/i386/sse2-mmx-6.c: Likewise.
      	* gcc.target/i386/sse2-mmx-7.c: Likewise.
      	* gcc.target/i386/sse2-mmx-8.c: Likewise.
      	* gcc.target/i386/sse2-mmx-9.c: Likewise.
      	* gcc.target/i386/sse2-mmx-10.c: Likewise.
      	* gcc.target/i386/sse2-mmx-11.c: Likewise.
      	* gcc.target/i386/sse2-mmx-12.c: Likewise.
      	* gcc.target/i386/sse2-mmx-13.c: Likewise.
      	* gcc.target/i386/sse2-mmx-14.c: Likewise.
      	* gcc.target/i386/sse2-mmx-15.c: Likewise.
      	* gcc.target/i386/sse2-mmx-16.c: Likewise.
      	* gcc.target/i386/sse2-mmx-17.c: Likewise.
      	* gcc.target/i386/sse2-mmx-18a.c: Likewise.
      	* gcc.target/i386/sse2-mmx-18b.c: Likewise.
      	* gcc.target/i386/sse2-mmx-18c.c: Likewise.
      	* gcc.target/i386/sse2-mmx-19a.c: Likewise.
      	* gcc.target/i386/sse2-mmx-18b.c: Likewise.
      	* gcc.target/i386/sse2-mmx-19c.c: Likewise.
      	* gcc.target/i386/sse2-mmx-19d.c: Likewise.
      	* gcc.target/i386/sse2-mmx-19e.c: Likewise.
      	* gcc.target/i386/sse2-mmx-20.c: Likewise.
      	* gcc.target/i386/sse2-mmx-21.c: Likewise.
      	* gcc.target/i386/sse2-mmx-22.c: Likewise.
      	* gcc.target/i386/sse2-mmx-cvtpi2ps.c: Likewise.
      	* gcc.target/i386/sse2-mmx-cvtps2pi.c: Likewise.
      	* gcc.target/i386/sse2-mmx-cvttps2pi.c: Likewise.
      	* gcc.target/i386/sse2-mmx-maskmovq.c: Likewise.
      	* gcc.target/i386/sse2-mmx-packssdw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-packsswb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-packuswb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-paddb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-paddd.c: Likewise.
      	* gcc.target/i386/sse2-mmx-paddq.c: Likewise.
      	* gcc.target/i386/sse2-mmx-paddsb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-paddsw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-paddusb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-paddusw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-paddw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pand.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pandn.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pavgb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pavgw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pcmpeqb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pcmpeqd.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pcmpeqw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pcmpgtb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pcmpgtd.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pcmpgtw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pextrw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pinsrw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pmaddwd.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pmaxsw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pmaxub.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pminsw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pminub.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pmovmskb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pmulhuw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pmulhw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pmullw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pmuludq.c: Likewise.
      	* gcc.target/i386/sse2-mmx-por.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psadbw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pshufw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pslld.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pslldi.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psllq.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psllqi.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psllw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psllwi.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psrad.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psradi.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psraw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psrawi.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psrld.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psrldi.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psrlq.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psrlqi.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psrlw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psrlwi.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psubb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psubd.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psubq.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psubusb.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psubusw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-psubw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-punpckhbw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-punpckhdq.c: Likewise.
      	* gcc.target/i386/sse2-mmx-punpckhwd.c: Likewise.
      	* gcc.target/i386/sse2-mmx-punpcklbw.c: Likewise.
      	* gcc.target/i386/sse2-mmx-punpckldq.c: Likewise.
      	* gcc.target/i386/sse2-mmx-punpcklwd.c: Likewise.
      	* gcc.target/i386/sse2-mmx-pxor.c: Likewise.
      
      From-SVN: r271254
      H.J. Lu committed
    • i386: Enable TM MMX intrinsics with SSE2 · 0cfa5d9c
      This patch enables TM MMX intrinsics with SSE2 when MMX is disabled.
      
      	PR target/89021
      	* config/i386/i386-builtins.c (bdesc_tm): Enable MMX intrinsics
      	with SSE2.
      
      From-SVN: r271253
      H.J. Lu committed
    • i386: Allow MMX intrinsic emulation with SSE · ecfdb16c
      Allow MMX intrinsic emulation with SSE/SSE2/SSSE3.  Don't enable MMX ISA
      by default with TARGET_MMX_WITH_SSE.
      
      For pr82483-1.c and pr82483-2.c, "-mssse3 -mno-mmx" compiles in 64-bit
      mode since MMX intrinsics can be emulated wit SSE.
      
      gcc/
      
      	PR target/89021
      	* config/i386/i386-builtin.def: Enable MMX intrinsics with
      	SSE/SSE2/SSSE3.
      	* config/i386/i386-builtins.c (ix86_init_mmx_sse_builtins):
      	Likewise.
      	* config/i386/i386-expand.c (ix86_expand_builtin): Allow
      	SSE/SSE2/SSSE3 to emulate MMX intrinsics with TARGET_MMX_WITH_SSE.
      	* config/i386/mmintrin.h: Only require SSE2 if __MMX_WITH_SSE__
      	is defined.
      
      gcc/testsuite/
      
      	PR target/89021
      	* gcc.target/i386/pr82483-1.c: Error only on ia32.
      	* gcc.target/i386/pr82483-2.c: Likewise.
      
      From-SVN: r271252
      H.J. Lu committed
    • i386: Allow MMX vector expanders with TARGET_MMX_WITH_SSE · d4410ec0
      	PR target/89021
      	* config/i386/mmx.md (*vec_dupv2sf): Changed to
      	define_insn_and_split to support SSE emulation.
      	(*vec_extractv2sf_0): Likewise.
      	(*vec_extractv2sf_1): Likewise.
      	(*vec_extractv2si_0): Likewise.
      	(*vec_extractv2si_1): Likewise.
      	(*vec_extractv2si_zext_mem): Likewise.
      	(vec_setv2sf): Also allow TARGET_MMX_WITH_SSE.
      	(vec_extractv2sf_1 splitter): Likewise.
      	(vec_extractv2sfsf): Likewise.
      	(vec_setv2si): Likewise.
      	(vec_extractv2si_1 splitter): Likewise.
      	(vec_extractv2sisi): Likewise.
      	(vec_setv4hi): Likewise.
      	(vec_extractv4hihi): Likewise.
      	(vec_setv8qi): Likewise.
      	(vec_extractv8qiqi): Likewise.
      	(vec_extractv2sfsf): Also allow TARGET_MMX_WITH_SSE.  Pass
      	TARGET_MMX_WITH_SSE ix86_expand_vector_extract.
      	(vec_extractv2sisi): Likewise.
      	(vec_extractv4hihi): Likewise.
      	(vec_extractv8qiqi): Likewise.
      	(vec_initv2sfsf): Also allow TARGET_MMX_WITH_SSE.  Pass
      	TARGET_MMX_WITH_SSE to ix86_expand_vector_init.
      	(vec_initv2sisi): Likewise.
      	(vec_initv4hihi): Likewise.
      	(vec_initv8qiqi): Likewise.
      	(vec_setv2si): Also allow TARGET_MMX_WITH_SSE.  Pass
      	TARGET_MMX_WITH_SSE to ix86_expand_vector_set.
      	(vec_setv4hi): Likewise.
      	(vec_setv8qi): Likewise.
      
      From-SVN: r271251
      H.J. Lu committed
    • i386: Allow MMXMODE moves with TARGET_MMX_WITH_SSE · e093d046
      	PR target/89021
      	* config/i386/mmx.md (MMXMODE:mov<mode>): Also allow
      	TARGET_MMX_WITH_SSE.
      	(MMXMODE:*mov<mode>_internal): Likewise.
      	(MMXMODE:movmisalign<mode>): Likewise.
      
      From-SVN: r271250
      H.J. Lu committed