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] combine: Omit redundant AND in change_zero_ext.


This is another micro-optimisation in change_zero_ext.  If an

  (and (lshiftrt ... (N)) (M))

generated by change_zero_ext is equivalent to just

  (lshiftrt ... (N))

(because the AND constant selects the N rightmost bits of the
result), strip off the AND.

_But_ I'm still not completely convinced whether this is a good
idea.  It may become necessary to add md patterns to deal with
just the LSHIFTRT.  On the other hand it saves the need for
another special case in change_zero_ext, and a less obvious, very
specific risbg pattern on s390 

--

Bootstrapped and regression tested on s390x and s390.  (Targets
with risbg-like instructions (Power, others?) may need some
tuning.)

Ciao

Dominik ^_^  ^_^

-- 

Dominik Vogt
IBM Germany

Attachment: 0001-ChangeLog
Description: Text document

Attachment: 0001-combine-Omit-redundant-AND-in-change_zero_ext.patch
Description: Text document


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