Resending, now that I've figured out how to make gmail send text email instead of html.
> >> Almost, what we want at the moment is COSTS_N_INSNS (1) + > >> extra_cost->vect.alu This won't work, because extra_cost->vect.alu is COSTS_N_INSNS (1), which means the total is COSTS_N_INSNS (2). The lower-subreg pass makes a decision on whether to split based on cost >= (word_move_cost * size/word_mode_size). Vectors are twice the size of word mode, and word moves are cost COSTS_N_INSNS (1). Setting the vector move cost to COSTS_N_INSNS (2) means we have COSTS_N_INSNS (2) >= COSTS_N_INSNS (2) and vector moves are split which is bad for vector register allocation. This calculation happens in compute_costs in lower-subreg.c. > How about the attached patch? It is similar to what is currently done > for scalar register move. I like this approach of using the vector register size instead of word size when we have a vector mode. Jim