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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|x86_64-*-* i?86-*-* aarch64 |x86_64-*-* i?86-*-*

--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Wilco from comment #4)
> AArch64 already generates:
> 
>   neg w1, w1
>   lsl w0, w0, w1
>   ret

aarch64 is because it has a pattern to optimize this explictly:
(insn 14 9 15 2 (set (reg/i:SI 0 x0)
        (ashift:SI (reg:SI 108)
            (minus:QI (const_int 32 [0x20])
                (subreg:QI (reg:SI 109) 0)))) "/app/example.cpp":5:1 744
{*aarch64_ashl_reg_minussi3}
     (expr_list:REG_DEAD (reg:SI 108)
        (expr_list:REG_DEAD (reg:SI 109)
            (nil))))

Which was added in r8-3672-g59abe903987d61 .  Maybe the x86_64 backend do a
similar thing?

Reply via email to