On 2/16/19, H.J. Lu <hjl.to...@gmail.com> wrote: > With SSE emulation of MMX intrinsics, we should make _mm_empty () as NOP > when MMX is disabled. > > PR target/89021 > * config/i386/mmx.md (mmx_<emms>): Renamed to ... > (mmx_<emms>_1): This. > (mmx_<emms>): New expander. > --- > gcc/config/i386/mmx.md | 29 ++++++++++++++++++++++++++++- > 1 file changed, 28 insertions(+), 1 deletion(-) > > diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md > index 9cf0251293a..0f925c0b1ea 100644 > --- a/gcc/config/i386/mmx.md > +++ b/gcc/config/i386/mmx.md > @@ -1848,7 +1848,34 @@ > [(UNSPECV_EMMS "emms") > (UNSPECV_FEMMS "femms")]) > > -(define_insn "mmx_<emms>" > +(define_expand "mmx_<emms>" > + [(unspec_volatile [(const_int 0)] EMMS) > + (clobber (reg:XF ST0_REG)) > + (clobber (reg:XF ST1_REG)) > + (clobber (reg:XF ST2_REG)) > + (clobber (reg:XF ST3_REG)) > + (clobber (reg:XF ST4_REG)) > + (clobber (reg:XF ST5_REG)) > + (clobber (reg:XF ST6_REG)) > + (clobber (reg:XF ST7_REG)) > + (clobber (reg:DI MM0_REG)) > + (clobber (reg:DI MM1_REG)) > + (clobber (reg:DI MM2_REG)) > + (clobber (reg:DI MM3_REG)) > + (clobber (reg:DI MM4_REG)) > + (clobber (reg:DI MM5_REG)) > + (clobber (reg:DI MM6_REG)) > + (clobber (reg:DI MM7_REG))] > + "TARGET_MMX || TARGET_MMX_WITH_SSE" > +{ > + if (TARGET_MMX) > + emit_insn (gen_mmx_<emms>_1 ()); > + else > + emit_insn (gen_nop ()); > + DONE;
The above should be written as: if (!TARGET_MMX) { emit_insn (gen_nop ())); DONE; } > +}) > + > +(define_insn "mmx_<emms>_1" The old insn should be renamed to "*mmx_<emms>". Uros. > [(unspec_volatile [(const_int 0)] EMMS) > (clobber (reg:XF ST0_REG)) > (clobber (reg:XF ST1_REG)) > -- > 2.20.1 > >