https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120734

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |liuhongt at gcc dot gnu.org
            Summary|-m32 -march=i686 doesn't    |*mov<mode>_(and|or) can be
                   |use "mov $0, mem"           |used for
                   |                            |TARGET_SPLIT_LONG_MOVES

--- Comment #3 from H.J. Lu <hjl.tools at gmail dot com> ---
Since there is

/* X86_TUNE_SPLIT_LONG_MOVES: Avoid instructions moving immediates
   directly to memory.  */  
DEF_TUNE (X86_TUNE_SPLIT_LONG_MOVES, "split_long_moves", m_PPRO)

to avoid long move instructions, like

c7 02 00 00 00 00       movl   $0x0,(%rdx)
c7 02 ff ff ff ff       movl   $0xffffffff,(%rdx)

*mov<mode>_(and|or) can be enable for TARGET_SPLIT_LONG_MOVES with

83 22 00                andl   $0x0,(%rdx)
83 0a ff                orl    $0xffffffff,(%rdx)

Reply via email to