https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117811
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |wrong-code
Known to work| |11.2.0, 11.4.0
Known to fail| |12.1.0, 12.4.0
Summary|[ARM NEON] bad code for |[12/13/14/15 Regression]
|conditional right shift |bad code for conditional
| |right shift with autovec
| |and neon
Target Milestone|--- |12.5
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
;; vect_xx_12.6_23 = vect_xx_7.5_21 >> shift_11(D);
(insn 18 13 19 (set (reg:V4SI 122)
(neg:V4SI (reg:V4SI 118))) "/app/example.cpp":12:8 -1
(nil))
(insn 19 18 20 (set (reg:V4SI 121 [ vect_xx_12.6_23 ])
(unspec:V4SI [
(reg:V4SI 114 [ vect_xx_1.7D.6140 ])
(reg:V4SI 122)
] VSHLQ_S)) "/app/example.cpp":12:8 -1
(expr_list:REG_EQUAL (ashiftrt:V4SI (reg:V4SI 114 [ vect_xx_1.7D.6140 ])
(reg:V4SI 118))
(nil)))
(insn 20 19 0 (set (reg:V4SI 114 [ vect_xx_1.7D.6140 ])
(reg:V4SI 121 [ vect_xx_12.6_23 ])) "/app/example.cpp":12:8 -1
(nil))
The expansion from GIMPLE to RTL has gone wrong.