https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115258
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2024-05-28 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Confirmed. Though the register allocation before was also just "lucky". (define_insn_and_split "aarch64_combinev16qi" [(set (match_operand:V2x16QI 0 "register_operand" "=w") (unspec:V2x16QI [(match_operand:V16QI 1 "register_operand" "w") (match_operand:V16QI 2 "register_operand" "w")] UNSPEC_CONCAT))] "TARGET_SIMD" "#" "&& reload_completed" [(const_int 0)] { aarch64_split_combinev16qi (operands); DONE; } [(set_attr "type" "multiple")] ) It seems like for little-endian the constraint on 1 should include 0. But I could be wrong.