This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH, i386]: Better fix for PR 80425


Hello!

New register allocator alternative decorations allows us to not
penalize alternatives *unless* reload is required. The '$' is
described as:

'$'
     This constraint is analogous to '!' but it disparages severely the
     alternative only if the operand with the '$' needs a reload.

and fits the use case where we want to zero-extend from mem/greg to
XMM register, but not when reload is required. Zero-extension from
general reg -> xmm reg is important after SSE variable shift patterns
were fixed to use DImode value as their count operand.


    PR target/80425
    * config/i386.i386.md (*zero_extendsidi2): Change (?r,*Yj), (?*Yi,r)
    and (*x,m) to ($r,Yj), ($Yi,r) and ($x,m).
    (zero-extendsidi peephole2): Remove peephole.

testsuite/ChangeLog:

    PR target/80425
    * gcc.target/i386/pr80425-3.c: New test.

Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

Committed to mainline SVN.

Uros.

Attachment: p.diff.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]