1. 16 May, 2019 6 commits
  2. 15 May, 2019 34 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
    • Prevent allocation of MMX registers with TARGET_MMX_WITH_SSE · ebd3c067
      2019-05-15  Uroš Bizjak  <ubizjak@gmail.com>
      
      	PR target/89021
      	* config/i386/i386.md (*zero_extendsidi2): Add mmx_isa attribute.
      	* config/i386/sse.md (sse2_cvtpi2pd): Ditto.
      	(sse2_cvtpd2pi): Ditto.
      	(sse2_cvttpd2pi): Ditto.
      	(*vec_concatv2sf_sse4_1): Ditto.
      	(*vec_concatv2sf_sse): Ditto.
      	(*vec_concatv2si_sse4_1): Ditto.
      	(*vec_concatv2si): Ditto.
      	(*vec_concatv4si_0): Ditto.
      	(*vec_concatv2di_0): Ditto.
      
      From-SVN: r271249
      Uros Bizjak committed
    • i386: Emulate MMX abs<mode>2 with SSE · 9c1d1db2
      Emulate MMX abs<mode>2 with SSE.  Only SSE register source operand is
      allowed.
      
      	PR target/89021
      	* config/i386/sse.md (abs<mode>2): Add SSE emulation.
      
      From-SVN: r271248
      H.J. Lu committed
    • i386: Emulate MMX ssse3_palignrdi with SSE · d3838596
      Emulate MMX version of palignrq with SSE version by concatenating 2
      64-bit MMX operands into a single 128-bit SSE operand, followed by
      SSE psrldq.  Only SSE register source operand is allowed.
      
      	PR target/89021
      	* config/i386/sse.md (ssse3_palignrdi): Changed to
      	define_insn_and_split to support SSE emulation.
      
      From-SVN: r271247
      H.J. Lu committed
    • i386: Emulate MMX ssse3_psign<mode>3 with SSE · e8b0e910
      Emulate MMX ssse3_psign<mode>3 with SSE.  Only SSE register source operand
      is allowed.
      
      	PR target/89021
      	* config/i386/sse.md (ssse3_psign<mode>3): Add SSE emulation.
      
      From-SVN: r271246
      H.J. Lu committed
    • i386: Emulate MMX pshufb with SSE version · 16ed2601
      Emulate MMX version of pshufb with SSE version by masking out the bit 3
      of the shuffle control byte.  Only SSE register source operand is allowed.
      
      	PR target/89021
      	* config/i386/sse.md (ssse3_pshufbv8qi3): Changed to
      	define_insn_and_split.  Also allow TARGET_MMX_WITH_SSE.  Add
      	SSE emulation.
      
      From-SVN: r271245
      H.J. Lu committed
    • i386: Emulate MMX ssse3_pmulhrswv4hi3 with SSE · 9c5a3533
      Emulate MMX ssse3_pmulhrswv4hi3 with SSE.  Only SSE register source
      operand is allowed.
      
      	PR target/89021
      	* config/i386/sse.md (ssse3_pmulhrswv4hi3): Require TARGET_MMX
      	or TARGET_MMX_WITH_SSE.
      	(*ssse3_pmulhrswv4hi3): Add SSE emulation.
      
      From-SVN: r271244
      H.J. Lu committed
    • i386: Emulate MMX ssse3_pmaddubsw with SSE · 6cbd0ef5
      Emulate MMX ssse3_pmaddubsw with SSE.  Only SSE register source operand
      is allowed.
      
      	PR target/89021
      	* config/i386/sse.md (ssse3_pmaddubsw): Add SSE emulation.
      
      From-SVN: r271243
      H.J. Lu committed
    • i386: Emulate MMX ssse3_ph<plusminus_mnemonic>dv2si3 with SSE · ea25b848
      Emulate MMX ssse3_ph<plusminus_mnemonic>dv2si3 with SSE by moving bits
      64:95 to bits 32:63 in SSE register.  Only SSE register source operand
      is allowed.
      
      	PR target/89021
      	* config/i386/sse.md (ssse3_ph<plusminus_mnemonic>dv2si3):
      	Changed to define_insn_and_split to support SSE emulation.
      
      From-SVN: r271242
      H.J. Lu committed
    • i386: Emulate MMX ssse3_ph<plusminus_mnemonic>wv4hi3 with SSE · 2da47f31
      Emulate MMX ssse3_ph<plusminus_mnemonic>wv4hi3 with SSE by moving bits
      64:95 to bits 32:63 in SSE register.  Only SSE register source operand
      is allowed.
      
      	PR target/89021
      	* config/i386/sse.md (ssse3_ph<plusminus_mnemonic>wv4hi3):
      	Changed to define_insn_and_split to support SSE emulation.
      
      From-SVN: r271241
      H.J. Lu committed
    • i386: Make _mm_empty () as NOP without MMX · 84791fca
      With SSE emulation of MMX intrinsics, we should make _mm_empty () as NOP
      without MMX.
      
      	PR target/89021
      	* config/i386/mmx.md (mmx_<emms>): Renamed to ...
      	(*mmx_<emms>): This.
      	(mmx_<emms>): New expander.
      
      From-SVN: r271240
      H.J. Lu committed
    • i386: Emulate MMX umulv1siv1di3 with SSE2 · 66248623
      Emulate MMX umulv1siv1di3 with SSE2.  Only SSE register source operand
      is allowed.
      
      	PR target/89021
      	* config/i386/mmx.md (sse2_umulv1siv1di3): Add SSE emulation
      	support.
      	(*sse2_umulv1siv1di3): Add SSE2 emulation.
      
      From-SVN: r271239
      H.J. Lu committed
    • i386: Emulate MMX movntq with SSE2 movntidi · 2ed7ae16
      Emulate MMX movntq with SSE2 movntidi.  Only register source operand is
      allowed.
      
      	PR target/89021
      	* config/i386/mmx.md (sse_movntq): Add SSE2 emulation.
      
      From-SVN: r271238
      H.J. Lu committed
    • i386: Emulate MMX mmx_psadbw with SSE · 018a45bd
      Emulate MMX mmx_psadbw with SSE.  Only SSE register source operand is
      allowed.
      
      	PR target/89021
      	* config/i386/mmx.md (mmx_psadbw): Add SSE emulation.
      
      From-SVN: r271237
      H.J. Lu committed
    • i386: Emulate MMX mmx_uavgv4hi3 with SSE · d9d6e621
      Emulate MMX mmx_uavgv4hi3 with SSE.  Only SSE register source operand is
      allowed.
      
      	PR target/89021
      	* config/i386/mmx.md (mmx_uavgv4hi3): Also check TARGET_MMX and
      	TARGET_MMX_WITH_SSE.
      	(*mmx_uavgv4hi3): Add SSE emulation.
      
      From-SVN: r271236
      H.J. Lu committed
    • i386: Emulate MMX mmx_uavgv8qi3 with SSE · a899fa35
      Emulate MMX mmx_uavgv8qi3 with SSE.  Only SSE register source operand is
      allowed.
      
      	PR target/89021
      	* config/i386/mmx.md (mmx_uavgv8qi3): Also check TARGET_MMX
      	and TARGET_MMX_WITH_SSE.
      	(*mmx_uavgv8qi3): Add SSE emulation.
      
      From-SVN: r271235
      H.J. Lu committed
    • i386: Emulate MMX maskmovq with SSE2 maskmovdqu · 55cd2379
      Emulate MMX maskmovq with SSE2 maskmovdqu for TARGET_MMX_WITH_SSE by
      zero-extending source and mask operands to 128 bits.  Handle unmapped
      bits 64:127 at memory address by adjusting source and mask operands
      together with memory address.
      
      	PR target/89021
      	* config/i386/xmmintrin.h: Emulate MMX maskmovq with SSE2
      	maskmovdqu for __MMX_WITH_SSE__.
      
      From-SVN: r271234
      H.J. Lu committed
    • i386: Emulate MMX mmx_umulv4hi3_highpart with SSE · 9377b54a
      Emulate MMX mmx_umulv4hi3_highpart with SSE.  Only SSE register source
      operand is allowed.
      
      	PR target/89021
      	* config/i386/mmx.md (mmx_umulv4hi3_highpart): Also check
      	TARGET_MMX and TARGET_MMX_WITH_SSE.
      	(*mmx_umulv4hi3_highpart): Add SSE emulation.
      
      From-SVN: r271233
      H.J. Lu committed
    • i386: Emulate MMX mmx_pmovmskb with SSE · 73371f6a
      Emulate MMX mmx_pmovmskb with SSE by zero-extending result of SSE pmovmskb
      from QImode to SImode.  Only SSE register source operand is allowed.
      
      	PR target/89021
      	* config/i386/mmx.md (mmx_pmovmskb): Changed to
      	define_insn_and_split to support SSE emulation.
      
      From-SVN: r271232
      H.J. Lu committed
    • i386: Emulate MMX V4HI smaxmin/V8QI umaxmin with SSE · 18184fdd
      Emulate MMX V4HI smaxmin/V8QI umaxmin with SSE.  Only SSE register source
      operand is allowed.
      
      	PR target/89021
      	* config/i386/mmx.md (mmx_<code>v4hi3): Also check TARGET_MMX
      	and TARGET_MMX_WITH_SSE.
      	(mmx_<code>v8qi3): Likewise.
      	(smaxmin:<code>v4hi3): New.
      	(umaxmin:<code>v8qi3): Likewise.
      	(smaxmin:*mmx_<code>v4hi3): Add SSE emulation.
      	(umaxmin:*mmx_<code>v8qi3): Likewise.
      
      From-SVN: r271231
      H.J. Lu committed
    • i386: Emulate MMX mmx_pinsrw with SSE · 42500d83
      Emulate MMX mmx_pinsrw with SSE.  Only SSE register destination operand
      is allowed.
      
      	PR target/89021
      	* config/i386/mmx.md (mmx_pinsrw): Also check TARGET_MMX and
      	TARGET_MMX_WITH_SSE.
      	(*mmx_pinsrw): Add SSE emulation.
      
      From-SVN: r271230
      H.J. Lu committed