https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88850
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Priority|P3 |P1 Status|UNCONFIRMED |NEW Last reconfirmed| |2019-01-18 CC| |vmakarov at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Started with r266385, which changed the cost: - r113: preferred VFP_REGS, alternative NO_REGS, allocno VFP_REGS - r112: preferred VFP_REGS, alternative NO_REGS, allocno VFP_REGS + r113: preferred GENERAL_REGS, alternative ALL_REGS, allocno ALL_REGS + r112: preferred GENERAL_REGS, alternative ALL_REGS, allocno ALL_REGS - a0(r113,l0) costs: LO_REGS:34000,34000 HI_REGS:34000,34000 CALLER_SAVE_REGS:34000,34000 GENERAL_REGS:34000,34000 VFP_D0_D7_REGS:4000,4000 VFP_LO_REGS:4000,4000 VFP_HI_REGS:4000,4000 VFP_REGS:4000,4000 ALL_REGS:34000,34000 MEM:24000,24000 - a1(r112,l0) costs: LO_REGS:34000,34000 HI_REGS:34000,34000 CALLER_SAVE_REGS:34000,34000 GENERAL_REGS:34000,34000 VFP_D0_D7_REGS:4000,4000 VFP_LO_REGS:4000,4000 VFP_HI_REGS:4000,4000 VFP_REGS:4000,4000 ALL_REGS:34000,34000 MEM:24000,24000 + a0(r113,l0) costs: GENERAL_REGS:4000,4000 VFP_D0_D7_REGS:60000,60000 VFP_LO_REGS:60000,60000 VFP_HI_REGS:60000,60000 VFP_REGS:60000,60000 ALL_REGS:30000,30000 MEM:40000,40000 + a1(r112,l0) costs: GENERAL_REGS:4000,4000 VFP_D0_D7_REGS:60000,60000 VFP_LO_REGS:60000,60000 VFP_HI_REGS:60000,60000 VFP_REGS:60000,60000 ALL_REGS:30000,30000 MEM:40000,40000 We have: (insn 13 4 14 2 (set (reg:V8QI 112) (reg:V8QI 0 r0 [ x ])) "pr88850-2.c":6:1 936 {*neon_movv8qi} (expr_list:REG_DEAD (reg:V8QI 0 r0 [ x ]) (nil))) (insn 14 13 7 2 (set (reg:V8QI 113) (reg:V8QI 2 r2 [ y ])) "pr88850-2.c":6:1 936 {*neon_movv8qi} (expr_list:REG_DEAD (reg:V8QI 2 r2 [ y ]) (nil))) (insn 7 14 8 2 (set (reg:V8QI 2 r2) (reg:V8QI 112)) "pr88850-2.c":7:3 936 {*neon_movv8qi} (expr_list:REG_DEAD (reg:V8QI 112) (nil))) (insn 8 7 9 2 (set (reg:V8QI 0 r0) (reg:V8QI 113)) "pr88850-2.c":7:3 936 {*neon_movv8qi} (expr_list:REG_DEAD (reg:V8QI 113) (nil))) and the move instructions don't have alternatives for GPR to GPR move, that can be done only through a VFP_REGS register.