On Tue, Oct 10, 2017 at 1:11 PM, Jakub Jelinek <ja...@redhat.com> wrote: > On Mon, Oct 09, 2017 at 09:47:49PM +0200, Jakub Jelinek wrote: >> > Hm, I remember there was similar patch for PR79565 [1], which seems >> > related. Does your patch also fix all builtins that HJ's patch touch? >> >> Ah, I wasn't aware of that patch. Will look in detail tomorrow. >> >> > [1] https://gcc.gnu.org/ml/gcc-patches/2017-08/msg00751.html >> >> Just quick analysis, while -mno-mmx doesn't imply -mno-sse (that is >> right), it implies -mno-3dnow and -mno-3dnow implies -mno-3dnowa. >> So all the spots that were changed from OPTION_MASK_ISA_3DNOW >> to OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_MMX or from >> OPTION_MASK_ISA_3DNOW_A to OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX >> were useless, we can do what we did before. >> It is just OPTION_MASK_ISA_SSE or higher with OPTION_MASK_ISA_MMX that >> is needed. >> I have no idea why __builtin_ia32_sfence or __builtin_ia32_movntq were >> changed. >> Nor I understand why any sse.md changes are needed, then the builtins >> aren't available, those insns shouldn't be synthetized out of thin air. >> And the i386.c def_builtin change IMNSHO isn't needed either, it is >> a compile time speed/memory optimization not to declare everything >> unconditionally, and the way it works right now is that any of the enabled >> ISAs enables the builtin, meaning that MMX enabled will mean those >> 35 will be declared, even when perhaps SSE isn't enabled, or for >> SSE when MMX isn't enabled, but that isn't that big deal. > > Ok, so I went through the patches in detail now. > The above mostly stands, we don't need | OPTION_MASK_ISA_MMX > for OPTION_MASK_ISA_3DNOW or OPTION_MASK_ISA_3DNOW_A builtins, except > those that have OPTION_MASK_ISA_SSE* | OPTION_MASK_ISA_3DNOW_A (because > while 3dnowa implies mmx and no-mmx implies no-3dnowa, that is not the > case for sse and we treat it as either sse* or 3dnowa). > > I indeed see no reason why __builtin_ia32_sfence should be only available > if TARGET_MMX, the instruction has no operands and SSE or 3dnowa CPUID. > > I went in detail through all my and HJ's *.def changes and > __builtin_ia32_movntq and __builtin_ia32_palignr were indeed missing > in my patch, the following updated version adds them and adds testsuite > coverage for them. Both of these have "y" constraint only > operands and thus ICE if -mno-mmx, because we can't reload them > (missed them because they are using DImode or V1DImode operands). > I've found also __builtin_ia32_p{add,sub}q that had V1DI operands/results, > those also ICE, fixed those in the following patch too. > > HJ's patch didn't have also __builtin_ia32_{pmuludq,pabs{b,w,d}} which do > ICE. > > As for the sse.md changes, I don't see it as 100% needed, and if we want > it, it can be done incrementally. In that case, we shouldn't change just > the insns/expanders that have just "y" operands/results in sse.md, but > also in mmx.md (there are many with TARGET_SSE* guards, all those would > need to be adjusted). > > Regarding the other changes in HJ's patch, the 2 testsuite tweaks are > related to the i386.c def_builtin change which IMHO is not needed. > So I think the following patch covers everything but the possibly > incrementally dealt && TARGET_MMX in {sse,mmx}.md. > > Ok for trunk? > > 2017-10-10 Jakub Jelinek <ja...@redhat.com> > H.J. Lu <hongjiu...@intel.com> > > PR target/82483 > * config/i386/i386.c (ix86_init_mmx_sse_builtins): Add > OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq, > __builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi. > (ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly > to OPTION_MASK_ISA_AVX512VL - builtins that have both > OPTION_MASK_ISA_MMX and some other bit set require both > mmx and the ISAs without the mmx bit. > * config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi, > __builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps, > __builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw, > __builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub, > __builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb, > __builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi, > __builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd, > __builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw, > __builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd, > __builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd, > __builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw, > __builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb, > __builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq, > __builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr): > Add OPTION_MASK_ISA_MMX. > > * gcc.target/i386/pr82483-1.c: New test. > * gcc.target/i386/pr82483-2.c: New test.
OK. Please also mention PR79565 in the ChangeLog. Thanks, Uros. > --- gcc/config/i386/i386.c.jj 2017-10-10 11:54:08.192707473 +0200 > +++ gcc/config/i386/i386.c 2017-10-10 11:56:33.836942065 +0200 > @@ -32988,7 +32988,9 @@ ix86_init_mmx_sse_builtins (void) > UNSIGNED_FTYPE_VOID, IX86_BUILTIN_STMXCSR); > > /* SSE or 3DNow!A */ > - def_builtin (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, > + def_builtin (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A > + /* As it uses V4HImode, we have to require -mmmx too. */ > + | OPTION_MASK_ISA_MMX, > "__builtin_ia32_maskmovq", VOID_FTYPE_V8QI_V8QI_PCHAR, > IX86_BUILTIN_MASKMOVQ); > > @@ -33426,7 +33428,9 @@ ix86_init_mmx_sse_builtins (void) > def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_vec_ext_v8hi", > HI_FTYPE_V8HI_INT, IX86_BUILTIN_VEC_EXT_V8HI); > > - def_builtin_const (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, > + def_builtin_const (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A > + /* As it uses V4HImode, we have to require -mmmx too. */ > + | OPTION_MASK_ISA_MMX, > "__builtin_ia32_vec_ext_v4hi", > HI_FTYPE_V4HI_INT, IX86_BUILTIN_VEC_EXT_V4HI); > > @@ -33450,7 +33454,9 @@ ix86_init_mmx_sse_builtins (void) > def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_vec_set_v8hi", > V8HI_FTYPE_V8HI_HI_INT, IX86_BUILTIN_VEC_SET_V8HI); > > - def_builtin_const (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, > + def_builtin_const (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A > + /* As it uses V4HImode, we have to require -mmmx too. */ > + | OPTION_MASK_ISA_MMX, > "__builtin_ia32_vec_set_v4hi", > V4HI_FTYPE_V4HI_HI_INT, IX86_BUILTIN_VEC_SET_V4HI); > > @@ -37914,18 +37920,23 @@ ix86_expand_builtin (tree exp, rtx targe > Originally the builtin was not created if it wasn't applicable to the > current ISA based on the command line switches. With function specific > options, we need to check in the context of the function making the call > - whether it is supported. Treat AVX512VL specially. For other flags, > + whether it is supported. Treat AVX512VL and MMX specially. For other > flags, > if isa includes more than one ISA bit, treat those are requiring any > of them. For AVX512VL, require both AVX512VL and the non-AVX512VL > - ISAs. Similarly for 64BIT, but we shouldn't be building such builtins > + ISAs. Likewise for MMX, require both MMX and the non-MMX ISAs. > + Similarly for 64BIT, but we shouldn't be building such builtins > at all, -m64 is a whole TU option. */ > if (((ix86_builtins_isa[fcode].isa > - & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_64BIT)) > + & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_MMX > + | OPTION_MASK_ISA_64BIT)) > && !(ix86_builtins_isa[fcode].isa > - & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_64BIT) > + & ~(OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_MMX > + | OPTION_MASK_ISA_64BIT) > & ix86_isa_flags)) > || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_AVX512VL) > && !(ix86_isa_flags & OPTION_MASK_ISA_AVX512VL)) > + || ((ix86_builtins_isa[fcode].isa & OPTION_MASK_ISA_MMX) > + && !(ix86_isa_flags & OPTION_MASK_ISA_MMX)) > || (ix86_builtins_isa[fcode].isa2 > && !(ix86_builtins_isa[fcode].isa2 & ix86_isa_flags2))) > { > --- gcc/config/i386/i386-builtin.def.jj 2017-10-09 13:26:48.000000000 +0200 > +++ gcc/config/i386/i386-builtin.def 2017-10-10 12:25:10.288903105 +0200 > @@ -137,7 +137,7 @@ BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse > > /* SSE or 3DNow!A */ > BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, CODE_FOR_sse_sfence, > "__builtin_ia32_sfence", IX86_BUILTIN_SFENCE, UNKNOWN, (int) VOID_FTYPE_VOID) > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, CODE_FOR_sse_movntq, > "__builtin_ia32_movntq", IX86_BUILTIN_MOVNTQ, UNKNOWN, (int) > VOID_FTYPE_PULONGLONG_ULONGLONG) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_sse_movntq, "__builtin_ia32_movntq", IX86_BUILTIN_MOVNTQ, UNKNOWN, > (int) VOID_FTYPE_PULONGLONG_ULONGLONG) > > /* SSE2 */ > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_lfence, "__builtin_ia32_lfence", > IX86_BUILTIN_LFENCE, UNKNOWN, (int) VOID_FTYPE_VOID) > @@ -505,10 +505,10 @@ BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sqr > BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse_rsqrtv4sf2, > "__builtin_ia32_rsqrtps", IX86_BUILTIN_RSQRTPS, UNKNOWN, (int) > V4SF_FTYPE_V4SF) > BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_rsqrtv4sf2, > "__builtin_ia32_rsqrtps_nr", IX86_BUILTIN_RSQRTPS_NR, UNKNOWN, (int) > V4SF_FTYPE_V4SF) > BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse_rcpv4sf2, "__builtin_ia32_rcpps", > IX86_BUILTIN_RCPPS, UNKNOWN, (int) V4SF_FTYPE_V4SF) > -BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse_cvtps2pi, > "__builtin_ia32_cvtps2pi", IX86_BUILTIN_CVTPS2PI, UNKNOWN, (int) > V2SI_FTYPE_V4SF) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_MMX, CODE_FOR_sse_cvtps2pi, > "__builtin_ia32_cvtps2pi", IX86_BUILTIN_CVTPS2PI, UNKNOWN, (int) > V2SI_FTYPE_V4SF) > BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse_cvtss2si, > "__builtin_ia32_cvtss2si", IX86_BUILTIN_CVTSS2SI, UNKNOWN, (int) > INT_FTYPE_V4SF) > BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_64BIT, CODE_FOR_sse_cvtss2siq, > "__builtin_ia32_cvtss2si64", IX86_BUILTIN_CVTSS2SI64, UNKNOWN, (int) > INT64_FTYPE_V4SF) > -BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse_cvttps2pi, > "__builtin_ia32_cvttps2pi", IX86_BUILTIN_CVTTPS2PI, UNKNOWN, (int) > V2SI_FTYPE_V4SF) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_MMX, CODE_FOR_sse_cvttps2pi, > "__builtin_ia32_cvttps2pi", IX86_BUILTIN_CVTTPS2PI, UNKNOWN, (int) > V2SI_FTYPE_V4SF) > BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse_cvttss2si, > "__builtin_ia32_cvttss2si", IX86_BUILTIN_CVTTSS2SI, UNKNOWN, (int) > INT_FTYPE_V4SF) > BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_64BIT, CODE_FOR_sse_cvttss2siq, > "__builtin_ia32_cvttss2si64", IX86_BUILTIN_CVTTSS2SI64, UNKNOWN, (int) > INT64_FTYPE_V4SF) > > @@ -562,7 +562,7 @@ BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse > BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_vec_interleave_highv4sf, > "__builtin_ia32_unpckhps", IX86_BUILTIN_UNPCKHPS, UNKNOWN, (int) > V4SF_FTYPE_V4SF_V4SF) > BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_vec_interleave_lowv4sf, > "__builtin_ia32_unpcklps", IX86_BUILTIN_UNPCKLPS, UNKNOWN, (int) > V4SF_FTYPE_V4SF_V4SF) > > -BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse_cvtpi2ps, > "__builtin_ia32_cvtpi2ps", IX86_BUILTIN_CVTPI2PS, UNKNOWN, (int) > V4SF_FTYPE_V4SF_V2SI) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_MMX, CODE_FOR_sse_cvtpi2ps, > "__builtin_ia32_cvtpi2ps", IX86_BUILTIN_CVTPI2PS, UNKNOWN, (int) > V4SF_FTYPE_V4SF_V2SI) > BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse_cvtsi2ss, > "__builtin_ia32_cvtsi2ss", IX86_BUILTIN_CVTSI2SS, UNKNOWN, (int) > V4SF_FTYPE_V4SF_SI) > BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_64BIT, CODE_FOR_sse_cvtsi2ssq, > "__builtin_ia32_cvtsi642ss", IX86_BUILTIN_CVTSI642SS, UNKNOWN, > V4SF_FTYPE_V4SF_DI) > > @@ -576,19 +576,19 @@ BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_abs > BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_copysigntf3, 0, IX86_BUILTIN_COPYSIGNQ, > UNKNOWN, (int) FLOAT128_FTYPE_FLOAT128_FLOAT128) > > /* SSE MMX or 3Dnow!A */ > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, > CODE_FOR_mmx_uavgv8qi3, "__builtin_ia32_pavgb", IX86_BUILTIN_PAVGB, UNKNOWN, > (int) V8QI_FTYPE_V8QI_V8QI) > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, > CODE_FOR_mmx_uavgv4hi3, "__builtin_ia32_pavgw", IX86_BUILTIN_PAVGW, UNKNOWN, > (int) V4HI_FTYPE_V4HI_V4HI) > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, > CODE_FOR_mmx_umulv4hi3_highpart, "__builtin_ia32_pmulhuw", > IX86_BUILTIN_PMULHUW, UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > - > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, > CODE_FOR_mmx_umaxv8qi3, "__builtin_ia32_pmaxub", IX86_BUILTIN_PMAXUB, > UNKNOWN, (int) V8QI_FTYPE_V8QI_V8QI) > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, > CODE_FOR_mmx_smaxv4hi3, "__builtin_ia32_pmaxsw", IX86_BUILTIN_PMAXSW, > UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, > CODE_FOR_mmx_uminv8qi3, "__builtin_ia32_pminub", IX86_BUILTIN_PMINUB, > UNKNOWN, (int) V8QI_FTYPE_V8QI_V8QI) > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, > CODE_FOR_mmx_sminv4hi3, "__builtin_ia32_pminsw", IX86_BUILTIN_PMINSW, > UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_mmx_uavgv8qi3, "__builtin_ia32_pavgb", IX86_BUILTIN_PAVGB, UNKNOWN, > (int) V8QI_FTYPE_V8QI_V8QI) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_mmx_uavgv4hi3, "__builtin_ia32_pavgw", IX86_BUILTIN_PAVGW, UNKNOWN, > (int) V4HI_FTYPE_V4HI_V4HI) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_mmx_umulv4hi3_highpart, "__builtin_ia32_pmulhuw", > IX86_BUILTIN_PMULHUW, UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > + > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_mmx_umaxv8qi3, "__builtin_ia32_pmaxub", IX86_BUILTIN_PMAXUB, > UNKNOWN, (int) V8QI_FTYPE_V8QI_V8QI) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_mmx_smaxv4hi3, "__builtin_ia32_pmaxsw", IX86_BUILTIN_PMAXSW, > UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_mmx_uminv8qi3, "__builtin_ia32_pminub", IX86_BUILTIN_PMINUB, > UNKNOWN, (int) V8QI_FTYPE_V8QI_V8QI) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_mmx_sminv4hi3, "__builtin_ia32_pminsw", IX86_BUILTIN_PMINSW, > UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, CODE_FOR_mmx_psadbw, > "__builtin_ia32_psadbw", IX86_BUILTIN_PSADBW, UNKNOWN, (int) > V1DI_FTYPE_V8QI_V8QI) > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, CODE_FOR_mmx_pmovmskb, > "__builtin_ia32_pmovmskb", IX86_BUILTIN_PMOVMSKB, UNKNOWN, (int) > INT_FTYPE_V8QI) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_mmx_psadbw, "__builtin_ia32_psadbw", IX86_BUILTIN_PSADBW, UNKNOWN, > (int) V1DI_FTYPE_V8QI_V8QI) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_mmx_pmovmskb, "__builtin_ia32_pmovmskb", IX86_BUILTIN_PMOVMSKB, > UNKNOWN, (int) INT_FTYPE_V8QI) > > -BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A, CODE_FOR_mmx_pshufw, > "__builtin_ia32_pshufw", IX86_BUILTIN_PSHUFW, UNKNOWN, (int) > V4HI_FTYPE_V4HI_INT) > +BDESC (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_MMX, > CODE_FOR_mmx_pshufw, "__builtin_ia32_pshufw", IX86_BUILTIN_PSHUFW, UNKNOWN, > (int) V4HI_FTYPE_V4HI_INT) > > /* SSE2 */ > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_shufpd, "__builtin_ia32_shufpd", > IX86_BUILTIN_SHUFPD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF_INT) > @@ -600,12 +600,12 @@ BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_ss > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_floatv4siv4sf2, > "__builtin_ia32_cvtdq2ps", IX86_BUILTIN_CVTDQ2PS, UNKNOWN, (int) > V4SF_FTYPE_V4SI) > > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_cvtpd2dq, > "__builtin_ia32_cvtpd2dq", IX86_BUILTIN_CVTPD2DQ, UNKNOWN, (int) > V4SI_FTYPE_V2DF) > -BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_cvtpd2pi, > "__builtin_ia32_cvtpd2pi", IX86_BUILTIN_CVTPD2PI, UNKNOWN, (int) > V2SI_FTYPE_V2DF) > +BDESC (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_MMX, CODE_FOR_sse2_cvtpd2pi, > "__builtin_ia32_cvtpd2pi", IX86_BUILTIN_CVTPD2PI, UNKNOWN, (int) > V2SI_FTYPE_V2DF) > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_cvtpd2ps, > "__builtin_ia32_cvtpd2ps", IX86_BUILTIN_CVTPD2PS, UNKNOWN, (int) > V4SF_FTYPE_V2DF) > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_cvttpd2dq, > "__builtin_ia32_cvttpd2dq", IX86_BUILTIN_CVTTPD2DQ, UNKNOWN, (int) > V4SI_FTYPE_V2DF) > -BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_cvttpd2pi, > "__builtin_ia32_cvttpd2pi", IX86_BUILTIN_CVTTPD2PI, UNKNOWN, (int) > V2SI_FTYPE_V2DF) > +BDESC (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_MMX, CODE_FOR_sse2_cvttpd2pi, > "__builtin_ia32_cvttpd2pi", IX86_BUILTIN_CVTTPD2PI, UNKNOWN, (int) > V2SI_FTYPE_V2DF) > > -BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_cvtpi2pd, > "__builtin_ia32_cvtpi2pd", IX86_BUILTIN_CVTPI2PD, UNKNOWN, (int) > V2DF_FTYPE_V2SI) > +BDESC (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_MMX, CODE_FOR_sse2_cvtpi2pd, > "__builtin_ia32_cvtpi2pd", IX86_BUILTIN_CVTPI2PD, UNKNOWN, (int) > V2DF_FTYPE_V2SI) > > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_cvtsd2si, > "__builtin_ia32_cvtsd2si", IX86_BUILTIN_CVTSD2SI, UNKNOWN, (int) > INT_FTYPE_V2DF) > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_cvttsd2si, > "__builtin_ia32_cvttsd2si", IX86_BUILTIN_CVTTSD2SI, UNKNOWN, (int) > INT_FTYPE_V2DF) > @@ -721,7 +721,7 @@ BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_ss > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_umulv8hi3_highpart, > "__builtin_ia32_pmulhuw128", IX86_BUILTIN_PMULHUW128, UNKNOWN, (int) > V8HI_FTYPE_V8HI_V8HI) > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_psadbw, > "__builtin_ia32_psadbw128", IX86_BUILTIN_PSADBW128, UNKNOWN, (int) > V2DI_FTYPE_V16QI_V16QI) > > -BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_umulv1siv1di3, > "__builtin_ia32_pmuludq", IX86_BUILTIN_PMULUDQ, UNKNOWN, (int) > V1DI_FTYPE_V2SI_V2SI) > +BDESC (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_MMX, > CODE_FOR_sse2_umulv1siv1di3, "__builtin_ia32_pmuludq", IX86_BUILTIN_PMULUDQ, > UNKNOWN, (int) V1DI_FTYPE_V2SI_V2SI) > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_vec_widen_umult_even_v4si, > "__builtin_ia32_pmuludq128", IX86_BUILTIN_PMULUDQ128, UNKNOWN, (int) > V2DI_FTYPE_V4SI_V4SI) > > BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_sse2_pmaddwd, > "__builtin_ia32_pmaddwd128", IX86_BUILTIN_PMADDWD128, UNKNOWN, (int) > V4SI_FTYPE_V8HI_V8HI) > @@ -761,8 +761,8 @@ BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_ss > BDESC (OPTION_MASK_ISA_SSE, CODE_FOR_sse2_movq128, "__builtin_ia32_movq128", > IX86_BUILTIN_MOVQ128, UNKNOWN, (int) V2DI_FTYPE_V2DI) > > /* SSE2 MMX */ > -BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_mmx_addv1di3, "__builtin_ia32_paddq", > IX86_BUILTIN_PADDQ, UNKNOWN, (int) V1DI_FTYPE_V1DI_V1DI) > -BDESC (OPTION_MASK_ISA_SSE2, CODE_FOR_mmx_subv1di3, "__builtin_ia32_psubq", > IX86_BUILTIN_PSUBQ, UNKNOWN, (int) V1DI_FTYPE_V1DI_V1DI) > +BDESC (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_MMX, CODE_FOR_mmx_addv1di3, > "__builtin_ia32_paddq", IX86_BUILTIN_PADDQ, UNKNOWN, (int) > V1DI_FTYPE_V1DI_V1DI) > +BDESC (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_MMX, CODE_FOR_mmx_subv1di3, > "__builtin_ia32_psubq", IX86_BUILTIN_PSUBQ, UNKNOWN, (int) > V1DI_FTYPE_V1DI_V1DI) > > /* SSE3 */ > BDESC (OPTION_MASK_ISA_SSE3, CODE_FOR_sse3_movshdup, > "__builtin_ia32_movshdup", IX86_BUILTIN_MOVSHDUP, UNKNOWN, (int) > V4SF_FTYPE_V4SF) > @@ -777,40 +777,40 @@ BDESC (OPTION_MASK_ISA_SSE3, CODE_FOR_ss > > /* SSSE3 */ > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv16qi2, "__builtin_ia32_pabsb128", > IX86_BUILTIN_PABSB128, UNKNOWN, (int) V16QI_FTYPE_V16QI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv8qi2, "__builtin_ia32_pabsb", > IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_absv8qi2, > "__builtin_ia32_pabsb", IX86_BUILTIN_PABSB, UNKNOWN, (int) V8QI_FTYPE_V8QI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv8hi2, "__builtin_ia32_pabsw128", > IX86_BUILTIN_PABSW128, UNKNOWN, (int) V8HI_FTYPE_V8HI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv4hi2, "__builtin_ia32_pabsw", > IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_absv4hi2, > "__builtin_ia32_pabsw", IX86_BUILTIN_PABSW, UNKNOWN, (int) V4HI_FTYPE_V4HI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv4si2, "__builtin_ia32_pabsd128", > IX86_BUILTIN_PABSD128, UNKNOWN, (int) V4SI_FTYPE_V4SI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_absv2si2, "__builtin_ia32_pabsd", > IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, CODE_FOR_absv2si2, > "__builtin_ia32_pabsd", IX86_BUILTIN_PABSD, UNKNOWN, (int) V2SI_FTYPE_V2SI) > > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phaddwv8hi3, > "__builtin_ia32_phaddw128", IX86_BUILTIN_PHADDW128, UNKNOWN, (int) > V8HI_FTYPE_V8HI_V8HI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phaddwv4hi3, > "__builtin_ia32_phaddw", IX86_BUILTIN_PHADDW, UNKNOWN, (int) > V4HI_FTYPE_V4HI_V4HI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_phaddwv4hi3, "__builtin_ia32_phaddw", IX86_BUILTIN_PHADDW, > UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phadddv4si3, > "__builtin_ia32_phaddd128", IX86_BUILTIN_PHADDD128, UNKNOWN, (int) > V4SI_FTYPE_V4SI_V4SI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phadddv2si3, > "__builtin_ia32_phaddd", IX86_BUILTIN_PHADDD, UNKNOWN, (int) > V2SI_FTYPE_V2SI_V2SI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_phadddv2si3, "__builtin_ia32_phaddd", IX86_BUILTIN_PHADDD, > UNKNOWN, (int) V2SI_FTYPE_V2SI_V2SI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phaddswv8hi3, > "__builtin_ia32_phaddsw128", IX86_BUILTIN_PHADDSW128, UNKNOWN, (int) > V8HI_FTYPE_V8HI_V8HI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phaddswv4hi3, > "__builtin_ia32_phaddsw", IX86_BUILTIN_PHADDSW, UNKNOWN, (int) > V4HI_FTYPE_V4HI_V4HI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_phaddswv4hi3, "__builtin_ia32_phaddsw", IX86_BUILTIN_PHADDSW, > UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phsubwv8hi3, > "__builtin_ia32_phsubw128", IX86_BUILTIN_PHSUBW128, UNKNOWN, (int) > V8HI_FTYPE_V8HI_V8HI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phsubwv4hi3, > "__builtin_ia32_phsubw", IX86_BUILTIN_PHSUBW, UNKNOWN, (int) > V4HI_FTYPE_V4HI_V4HI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_phsubwv4hi3, "__builtin_ia32_phsubw", IX86_BUILTIN_PHSUBW, > UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phsubdv4si3, > "__builtin_ia32_phsubd128", IX86_BUILTIN_PHSUBD128, UNKNOWN, (int) > V4SI_FTYPE_V4SI_V4SI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phsubdv2si3, > "__builtin_ia32_phsubd", IX86_BUILTIN_PHSUBD, UNKNOWN, (int) > V2SI_FTYPE_V2SI_V2SI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_phsubdv2si3, "__builtin_ia32_phsubd", IX86_BUILTIN_PHSUBD, > UNKNOWN, (int) V2SI_FTYPE_V2SI_V2SI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phsubswv8hi3, > "__builtin_ia32_phsubsw128", IX86_BUILTIN_PHSUBSW128, UNKNOWN, (int) > V8HI_FTYPE_V8HI_V8HI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_phsubswv4hi3, > "__builtin_ia32_phsubsw", IX86_BUILTIN_PHSUBSW, UNKNOWN, (int) > V4HI_FTYPE_V4HI_V4HI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_phsubswv4hi3, "__builtin_ia32_phsubsw", IX86_BUILTIN_PHSUBSW, > UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_pmaddubsw128, > "__builtin_ia32_pmaddubsw128", IX86_BUILTIN_PMADDUBSW128, UNKNOWN, (int) > V8HI_FTYPE_V16QI_V16QI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_pmaddubsw, > "__builtin_ia32_pmaddubsw", IX86_BUILTIN_PMADDUBSW, UNKNOWN, (int) > V4HI_FTYPE_V8QI_V8QI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_pmaddubsw, "__builtin_ia32_pmaddubsw", IX86_BUILTIN_PMADDUBSW, > UNKNOWN, (int) V4HI_FTYPE_V8QI_V8QI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_pmulhrswv8hi3, > "__builtin_ia32_pmulhrsw128", IX86_BUILTIN_PMULHRSW128, UNKNOWN, (int) > V8HI_FTYPE_V8HI_V8HI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_pmulhrswv4hi3, > "__builtin_ia32_pmulhrsw", IX86_BUILTIN_PMULHRSW, UNKNOWN, (int) > V4HI_FTYPE_V4HI_V4HI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_pmulhrswv4hi3, "__builtin_ia32_pmulhrsw", > IX86_BUILTIN_PMULHRSW, UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_pshufbv16qi3, > "__builtin_ia32_pshufb128", IX86_BUILTIN_PSHUFB128, UNKNOWN, (int) > V16QI_FTYPE_V16QI_V16QI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_pshufbv8qi3, > "__builtin_ia32_pshufb", IX86_BUILTIN_PSHUFB, UNKNOWN, (int) > V8QI_FTYPE_V8QI_V8QI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_pshufbv8qi3, "__builtin_ia32_pshufb", IX86_BUILTIN_PSHUFB, > UNKNOWN, (int) V8QI_FTYPE_V8QI_V8QI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_psignv16qi3, > "__builtin_ia32_psignb128", IX86_BUILTIN_PSIGNB128, UNKNOWN, (int) > V16QI_FTYPE_V16QI_V16QI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_psignv8qi3, > "__builtin_ia32_psignb", IX86_BUILTIN_PSIGNB, UNKNOWN, (int) > V8QI_FTYPE_V8QI_V8QI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_psignv8qi3, "__builtin_ia32_psignb", IX86_BUILTIN_PSIGNB, > UNKNOWN, (int) V8QI_FTYPE_V8QI_V8QI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_psignv8hi3, > "__builtin_ia32_psignw128", IX86_BUILTIN_PSIGNW128, UNKNOWN, (int) > V8HI_FTYPE_V8HI_V8HI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_psignv4hi3, > "__builtin_ia32_psignw", IX86_BUILTIN_PSIGNW, UNKNOWN, (int) > V4HI_FTYPE_V4HI_V4HI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_psignv4hi3, "__builtin_ia32_psignw", IX86_BUILTIN_PSIGNW, > UNKNOWN, (int) V4HI_FTYPE_V4HI_V4HI) > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_psignv4si3, > "__builtin_ia32_psignd128", IX86_BUILTIN_PSIGND128, UNKNOWN, (int) > V4SI_FTYPE_V4SI_V4SI) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_psignv2si3, > "__builtin_ia32_psignd", IX86_BUILTIN_PSIGND, UNKNOWN, (int) > V2SI_FTYPE_V2SI_V2SI) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_psignv2si3, "__builtin_ia32_psignd", IX86_BUILTIN_PSIGND, > UNKNOWN, (int) V2SI_FTYPE_V2SI_V2SI) > > /* SSSE3. */ > BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_palignrti, > "__builtin_ia32_palignr128", IX86_BUILTIN_PALIGNR128, UNKNOWN, (int) > V2DI_FTYPE_V2DI_V2DI_INT_CONVERT) > -BDESC (OPTION_MASK_ISA_SSSE3, CODE_FOR_ssse3_palignrdi, > "__builtin_ia32_palignr", IX86_BUILTIN_PALIGNR, UNKNOWN, (int) > V1DI_FTYPE_V1DI_V1DI_INT_CONVERT) > +BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, > CODE_FOR_ssse3_palignrdi, "__builtin_ia32_palignr", IX86_BUILTIN_PALIGNR, > UNKNOWN, (int) V1DI_FTYPE_V1DI_V1DI_INT_CONVERT) > > /* SSE4.1 */ > BDESC (OPTION_MASK_ISA_SSE4_1, CODE_FOR_sse4_1_blendpd, > "__builtin_ia32_blendpd", IX86_BUILTIN_BLENDPD, UNKNOWN, (int) > V2DF_FTYPE_V2DF_V2DF_INT) > --- gcc/testsuite/gcc.target/i386/pr82483-1.c.jj 2017-10-10 > 11:56:33.839942029 +0200 > +++ gcc/testsuite/gcc.target/i386/pr82483-1.c 2017-10-10 12:05:30.878432387 > +0200 > @@ -0,0 +1,44 @@ > +/* PR target/82483 */ > +/* { dg-do compile } */ > +/* { dg-options "-mssse3 -mno-mmx -Wno-psabi" } */ > +/* { dg-error "needs isa option" "" { target *-*-* } 0 } */ > + > +#include <x86intrin.h> > + > +void f1 (__m64 x, __m64 y, char *z) { _mm_maskmove_si64 (x, y, z); } > +int f2 (__m64 x) { return _mm_extract_pi16 (x, 1); } > +__m64 f3 (__m64 x, int y) { return _mm_insert_pi16 (x, y, 1); } > +__m64 f4 (__m128 x) { return _mm_cvtps_pi32 (x); } > +__m64 f5 (__m128 x) { return _mm_cvttps_pi32 (x); } > +__m128 f6 (__m128 x, __m64 y) { return _mm_cvtpi32_ps (x, y); } > +__m64 f7 (__m64 x, __m64 y) { return _mm_avg_pu8 (x, y); } > +__m64 f8 (__m64 x, __m64 y) { return _mm_avg_pu16 (x, y); } > +__m64 f9 (__m64 x, __m64 y) { return _mm_mulhi_pu16 (x, y); } > +__m64 f10 (__m64 x, __m64 y) { return _mm_max_pu8 (x, y); } > +__m64 f11 (__m64 x, __m64 y) { return _mm_max_pi16 (x, y); } > +__m64 f12 (__m64 x, __m64 y) { return _mm_min_pu8 (x, y); } > +__m64 f13 (__m64 x, __m64 y) { return _mm_min_pi16 (x, y); } > +__m64 f14 (__m64 x, __m64 y) { return _mm_sad_pu8 (x, y); } > +int f15 (__m64 x) { return _mm_movemask_pi8 (x); } > +__m64 f16 (__m64 x) { return _mm_shuffle_pi16 (x, 1); } > +__m64 f17 (__m128d x) { return _mm_cvtpd_pi32 (x); } > +__m64 f18 (__m128d x) { return _mm_cvttpd_pi32 (x); } > +__m128d f19 (__m64 x) { return _mm_cvtpi32_pd (x); } > +__m64 f20 (__m64 x, __m64 y) { return _mm_mul_su32 (x, y); } > +__m64 f21 (__m64 x) { return _mm_abs_pi8 (x); } > +__m64 f22 (__m64 x) { return _mm_abs_pi16 (x); } > +__m64 f23 (__m64 x) { return _mm_abs_pi32 (x); } > +__m64 f24 (__m64 x, __m64 y) { return _mm_hadd_pi16 (x, y); } > +__m64 f25 (__m64 x, __m64 y) { return _mm_hadd_pi32 (x, y); } > +__m64 f26 (__m64 x, __m64 y) { return _mm_hadds_pi16 (x, y); } > +__m64 f27 (__m64 x, __m64 y) { return _mm_hsub_pi16 (x, y); } > +__m64 f28 (__m64 x, __m64 y) { return _mm_hsub_pi32 (x, y); } > +__m64 f29 (__m64 x, __m64 y) { return _mm_hsubs_pi16 (x, y); } > +__m64 f30 (__m64 x, __m64 y) { return _mm_maddubs_pi16 (x, y); } > +__m64 f31 (__m64 x, __m64 y) { return _mm_mulhrs_pi16 (x, y); } > +__m64 f32 (__m64 x, __m64 y) { return _mm_shuffle_pi8 (x, y); } > +__m64 f33 (__m64 x, __m64 y) { return _mm_sign_pi8 (x, y); } > +__m64 f34 (__m64 x, __m64 y) { return _mm_sign_pi16 (x, y); } > +__m64 f35 (__m64 x, __m64 y) { return _mm_sign_pi32 (x, y); } > +void f36 (__m64 *x, __m64 y) { _mm_stream_pi (x, y); } > +__m64 f37 (__m64 x, __m64 y) { return _mm_alignr_pi8 (x, y, 3); } > --- gcc/testsuite/gcc.target/i386/pr82483-2.c.jj 2017-10-10 > 12:26:09.106180647 +0200 > +++ gcc/testsuite/gcc.target/i386/pr82483-2.c 2017-10-10 12:26:37.325834022 > +0200 > @@ -0,0 +1,9 @@ > +/* PR target/82483 */ > +/* { dg-do compile } */ > +/* { dg-options "-mssse3 -mno-mmx -Wno-psabi" } */ > +/* { dg-error "needs isa option" "" { target *-*-* } 0 } */ > + > +#include <x86intrin.h> > + > +__v1di f1 (__v1di x, __v1di y) { return __builtin_ia32_paddq (x, y); } > +__v1di f2 (__v1di x, __v1di y) { return __builtin_ia32_psubq (x, y); } > > > Jakub