[Bug target/55583] Extended shift instruction on x86-64 is not used, producing unoptimal code

glisse at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Dec 4 10:16:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55583

Marc Glisse <glisse at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |glisse at gcc dot gnu.org

--- Comment #4 from Marc Glisse <glisse at gcc dot gnu.org> 2012-12-04 10:15:27 UTC ---
It looks like the patterns all look for 32-i as the second shift amount.
Writing an additional version that takes a constant (with an extra check that
the sum of the constants is 32, and we then have to specify immediate_length
manually) and replacing (match_dup 0) with an extra operand that has the
constraint "0" seems to work. (and breaks again if I swap the 2 sides of
operator| )



More information about the Gcc-bugs mailing list