diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2019-05-15 15:22:08 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2019-05-15 08:22:08 -0700 |
commit | 84791fca67654942f39586b56166fcf22ef77553 (patch) | |
tree | af4e8266b0956a59a248008f745a58dc79337792 | |
parent | 66248623022d259e2f9f15c1a26e78c591286b1c (diff) | |
download | gcc-84791fca67654942f39586b56166fcf22ef77553.zip gcc-84791fca67654942f39586b56166fcf22ef77553.tar.gz gcc-84791fca67654942f39586b56166fcf22ef77553.tar.bz2 |
i386: Make _mm_empty () as NOP without MMX
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
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/mmx.md | 30 |
2 files changed, 36 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2170b2f..9022014 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,13 @@ 2019-05-15 H.J. Lu <hongjiu.lu@intel.com> PR target/89021 + * config/i386/mmx.md (mmx_<emms>): Renamed to ... + (*mmx_<emms>): This. + (mmx_<emms>): New expander. + +2019-05-15 H.J. Lu <hongjiu.lu@intel.com> + + PR target/89021 * config/i386/mmx.md (sse2_umulv1siv1di3): Add SSE emulation support. (*sse2_umulv1siv1di3): Add SSE2 emulation. diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md index 6504ebb..8ffe4f7 100644 --- a/gcc/config/i386/mmx.md +++ b/gcc/config/i386/mmx.md @@ -1874,7 +1874,35 @@ [(UNSPECV_EMMS "emms") (UNSPECV_FEMMS "femms")]) -(define_insn "mmx_<emms>" +(define_expand "mmx_<emms>" + [(parallel + [(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_nop ()); + DONE; + } +}) + +(define_insn "*mmx_<emms>" [(unspec_volatile [(const_int 0)] EMMS) (clobber (reg:XF ST0_REG)) (clobber (reg:XF ST1_REG)) |