On Sun, May 5, 2013 at 12:35 AM, Alan Modra <amo...@gmail.com> wrote: > This fixes a couple more little-endian bugs. bswapdi stores when > !TARGET_LDBRX were being split to two bswapsi but written to the wrong > words because we word swapped twice. ashrdi3 resulted in a libcall. > > I think I have ashrdi3_no_power correct. For LE, the first reg of a > register pair is the low word, the second the high word, and you use > %L to select the high reg. (For BE the second reg is the low word and > %L really does stand for low). So a quick rule of thumb for > converting big-endian register pair patterns to little-endian is > replace all the reg pair %n with %Ln and all %Ln with %n. > > * config/rs6000/rs6000.md (bswapdi 2nd splitter): Don't swap words > twice for little-endian. > (ashrdi3_no_power, ashrdi3): Support little-endian.
This is okay. Thanks, David