https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104059
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |12.0
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Last reconfirmed| |2022-01-17
Summary|cprop_hardreg propgates |[12 Regression]
|hard registers for mov |cprop_hardreg propgates
|instructions between |hard registers for mov
|different REG_CLASS without |instructions between
|considering cost |different REG_CLASS without
| |considering cost
Component|target |rtl-optimization
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed, I see it even on aarch64:
addv s0, v0.4s
fmov w0, s0
fmov w1, s0
In GCC 11 we get:
ldr q0, [x1]
shl v0.4s, v0.4s, 1
addv s0, v0.4s
fmov w0, s0
lsr w1, w0, 16
add w0, w1, w0, uxth
lsr w0, w0, 1
While on the trunk we get:
shl v0.4s, v0.4s, 1
addv s0, v0.4s
fmov w0, s0
fmov w1, s0
and w0, w0, 65535
add w0, w0, w1, lsr 16
lsr w0, w0, 1