https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119368
--- Comment #4 from Hongtao Liu <liuhongt at gcc dot gnu.org> --- > > But for this case, I think targetm.can_change_mode_class (op_mode, > result_mode, ALL_REGS) is not needed since it's memory. I mean case in #c1, for case in #c0, it's more complicated. 1. It's also related to simplication of vec_select with higher part memory. 2. Optimizer should somehow figure out the orginal whole memory is not needed anymore, then cost model can do the right thing. Otherwise even w/ 1), cost model may take it as unprofitable(since it thought there're 3 memory accesses(upper, lower, whole) vs 1 memory(whole) + 1 vec_extract_high)