On Sat, Mar 12, 2022 at 7:50 PM Roger Sayle <ro...@nextmovesoftware.com> wrote:
>
>
> My sincere apologies for the breakage, but alas handling SImode in the
> recently added "xorl;movb -> movzbl" peephole2 turns out to be slightly
> more complicated that just using SWI48 as a mode iterator.  I'd failed
> to check the machine description carefully, but the *zero_extend<mode>si2
> define_insn is conditionally defined, based on x86 target tuning using
> TARGET_ZERO_EXTEND_WITH_AND, and therefore unavailable on 486 and pentium
> unless optimizing the code for size.  It turns out that the libitm testsuite
> specifies -m486 with make check RUNTESTFLAGS="--target_board='unix{-m32}'"
> and therefore encounters/catches my oversight.
>
> Fixed by adding the appropriate conditions to the new peephole2 patterns.
> It don't think it's worth the effort to provide an equivalent optimization
> for
> these (very) old architectures.
>
> Tested on x86_64-pc-linux-gnu with make bootstrap and make -k check
> with no new failures.  Confirmed using RUNTESTFLAGS that this
> fixes the above failure, and the recently added testcase with -march=i486.
> Ok for mainline?
>
>
> 2022-03-12  Roger Sayle  <ro...@nextmovesoftware.com>
>
> gcc/ChangeLog
>         * config/i386/i386.md (peephole2 xorl;movb -> movzbl): Disable
>         transformation when *zero_extend<mode>si2 is not available.
>
> gcc/testsuite/ChangeLog
>         * gcc.target/i386/pr98335.c: Skip this test if tuning for i486
>         or pentium, and not optimizing for size.

OK, but please use:

<MODE>mode != SImode

instead of

<SWI48:MODE_SIZE> != 4

Thanks,
Uros.

Reply via email to