On Sun, Nov 08, 2015 at 07:39:14PM -0500, Michael Meissner wrote:
> +;; Pretend we have a memory form of extswsli until register allocation is
> done
> +;; so that we use LWZ to load the value from memory, instead of LWA.
We generate sign_extend loads for many cases where zero_extend would be
preferable. We should deal with that generically, and then we can lose
this hack.
> +(define_insn_and_split "*ashdi3_extswsli_dot"
...
> + if (REGNO (cr) == CR0_REGNO)
> + {
> + emit_insn (gen_ashdi3_extswsli_dot2 (dest, src2, shift, cr));
> + DONE;
> + }
s/dot2/dot/
> +/* { dg-final { scan-assembler "extswsli\\. " } } */
> +/* { dg-final { scan-assembler "lwz " } } */
> +/* { dg-final { scan-assembler-not "lwa " } } */
"lwa" is a nasty string to search for ("always"). You can write this as
{\mlwa\M} for more sanity.
> +/* { dg-final { scan-assembler-not "sldi " } } */
> +/* { dg-final { scan-assembler-not "sldi\\. " } } */
Similarly {\msldi\M} catches both.
Segher