https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110717
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |krebbel at gcc dot gnu.org,
| |law at gcc dot gnu.org,
| |rsandifo at gcc dot gnu.org,
| |segher at gcc dot gnu.org
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Wonder how many important targets provide double-word shift patterns vs. ones
which expand it through generic code.
aarch64 looks quite small:
foo:
extr x1, x1, x0, 5
asr x1, x1, 59
ret
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
ditto s390x:
foo:
lg %r1,0(%r3)
lg %r3,8(%r3)
srlg %r5,%r3,5
lghi %r0,31
sllg %r1,%r1,59
ogr %r1,%r5
ngr %r3,%r0
sllg %r5,%r5,5
srag %r1,%r1,59
ogr %r3,%r5
stg %r3,8(%r2)
stg %r1,0(%r2)
br %r14
ditto riscv64:
foo:
srli a5,a0,5
slli a1,a1,59
or a1,a5,a1
slli a5,a1,5
andi a0,a0,31
or a0,a5,a0
srai a1,a1,59
ret