rs6000: Generate rl*imi for memory some more
authorSegher Boessenkool <segher@gcc.gnu.org>
Mon, 23 Jul 2018 11:25:28 +0000 (13:25 +0200)
committerSegher Boessenkool <segher@gcc.gnu.org>
Mon, 23 Jul 2018 11:25:28 +0000 (13:25 +0200)
commit268e16e89b2fe7ed6f9f03c877e05714464a704a
treef5a539fe7e1768deaa804abae7352d145b1fe4ee
parent315aa691f486bfe71bae0a5fc8828db26daebb56
rs6000: Generate rl*imi for memory some more

An rl<wd>imi instruction is often written like "(a << 8) | (b & 255)".
If "b" now is a byte in memory, combine will combine the load with the
masking (with 255 in the example), since that is a single instruction;
and then the rl*imi isn't combined from the remaining pieces.

This patch adds a splitter to make combine handle this case.

* config/rs6000/rs6000.md (splitters for rldimi and rlwimi with the
zero_extend argument from memory): New.

From-SVN: r262929
gcc/ChangeLog
gcc/config/rs6000/rs6000.md