https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110717

--- Comment #12 from Segher Boessenkool <segher at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #9)
> Wonder how many important targets provide double-word shift patterns vs.
> ones which expand it through generic code.

Very long ago rs6000 had special code for this.  That was sub-optimal in
other ways, and the generic code generated almost ideal code (sometimes an
extra data movement insn).

> powerpc probably could be improved:
> foo:
>         srwi 9,4,5
>         mr 10,9
>         rlwimi 4,9,5,0,31-5
>         rlwimi 10,3,27,0,31-27
>         srawi 3,10,27
>         blr

This is hugely worse than what we used to do, it seems?

GCC 8 did

        srdi 9,4,5
        rldimi 9,3,59,0
        rldimi 4,9,5,0
        sradi 3,9,59
        blr

GCC 9 started with the unnecessary move.

But we should get only one insert insn in any case!

Reply via email to