I think we need a fix or a revert for this today, please. Bootstrap has been broken for a couple of days during the last week of stage 3, which is really problematic.
Thanks, Bill On 1/12/22 6:57 AM, Richard Biener via Gcc-patches wrote: > On Wed, 12 Jan 2022, Andre Vieira (lists) wrote: > >> On 12/01/2022 11:59, Richard Biener wrote: >>> On Wed, 12 Jan 2022, Andre Vieira (lists) wrote: >>> >>>> On 12/01/2022 11:44, Richard Sandiford wrote: >>>>> Another alternative would be to push autodetected_vector_mode when the >>>>> length is 1 and keep 1 as the starting point. >>>>> >>>>> Richard >>>> I'm guessing we would still want to skip epilogue vectorization if >>>> !VECTOR_MODE_P (autodetected_vector_mode) in that case? >>> Practically we currently only support fixed width word_mode there, >>> but eventually one could end up with 64bit DImode for the main loop >>> and 32bit V4QImode in the epilogue ... so not sure if it's worth >>> special-casing. But I don't mind adding that skip. >>> >>> Richard. >> I left out the skip, it shouldn't break anything as it would try that same >> mode before anyway. >> Just to clarify what I meant though was to skip if autodetected_vector_mode >> wasn't a vector AND the target didn't define autovectorize_vector_modes, so >> in >> that scenario it wouldn't ever try V4QImode for the epilogue if the mainloop >> was autodetected DImode, I think... >> Either way, this is less code, less complicated and doesn't analyze more than >> it did before the original patch, so I'm happy with that too. >> >> Is this what you had in mind? > - mode_i = 1; > + if (vector_modes.length () == 1) > + { > + /* If we only had VOIDmode then use AUTODETECTED_VECTOR_MODE to see > if > + an epilogue can be created with that mode. */ > + vector_modes[0] = autodetected_vector_mode; > + mode_i = 0; > + } > + else > + mode_i = 1; > + > > I would have left out the condition and unconditionally do > > vector_modes[0] = autodetected_vector_mode; > mode_i = 0; > > but OK if you think it makes sense to special case length == 1. > > Richard.