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

--- Comment #36 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Richard Biener from comment #30)

> Hmm, it regresses the gcc.target/i386/minmax-6.c though and thus cactusADM
> (IIRC).

I was looking a bit into minmax6.c failure. Apparently, despite spill/fill
cactusADM doesn't regress [1]. By avoiding subregs, spill and fill are both in
V4SImode, so store forwarding mitigates the effects of memory access. Thus, the
current testsuite failure is benign, and scan-asm-not should be adjusted to
only check for SImode spill.

OTOH, spill in SImode (32bit) and fill in V4SImode (128 bit), which is the
consequence of using V4SImode paradoxical subreg of SImode value disables store
forwarding and a big runtime regression in a hot loop is observed.

Based on this observation, your approach of using special patterns to convert
SImode to V4SImode is the correct approach, and I retract my patch that
reintroduces subregs instead.

[1]
https://gcc.opensuse.org/gcc-old/SPEC/CFP/sb-czerny-head-64-2006/436_cactusADM_recent_big.png

Reply via email to