On Tue, Jan 13, 2026 at 5:50 AM Andrew Pinski <[email protected]> wrote: > > On Mon, Jan 12, 2026 at 7:56 PM Jeffrey Law > <[email protected]> wrote: > > > > > > > > On 1/12/2026 2:58 PM, Andrew Pinski wrote: > > > > I think this should be closer to what I did for VEC_SHL_INSERT in > > r16-4742-gfcde4c81644aec (this was based on the review where I tried > > to do a similar thing as you did: > > https://gcc.gnu.org/pipermail/gcc-patches/2024-July/658275.html ). > > > > That is, in fold_const_call (in fold-const.cc) add VEC_EXTRACT case > > and do similar as fold_const_vec_shl_insert. > > Something like: > > ``` > > static tree > > fold_const_vec_extract (tree, tree arg0, tree arg1) > > { > > if (TREE_CODE (arg0) != VECTOR_CST) > > return NULL_TREE; > > > > /* vec_extract ( dup(CST), N) -> CST. */ > > if (tree elem = uniform_vector_p (arg0)) > > return elem; > > > > return NULL_TREE; > > } > > ``` > > And also in match.pd add: > > ``` > > (simplify > > (IFN_VEC_EXTRACT (vec_duplicate @0) @1) > > @0) > > ``` > > > > I don't think we need to care about the bounds check on @1 either > > because then it would be undefined anyways. > > > > Uniform vectors can come in different forms. They can be a > > VEC_DUPLICATE, VECTOR_CST or even a CONSTRUCTOR node. uniform_vector_p > > knows how to handle all three cases already. So while that solution is > > simpler, I suspect it's leaving good opportunities on the floor and may not > > even cover the regression in question (I haven't checked that). > > Note your current pattern only handles VECTOR_CST because that is only > valid as an operand for the function call. > For a CONSTRUCTOR or a VEC_DUPLICATE, @0 will be a SSA_NAME as > CONSTRUCTOR/VEC_DUPLICATEs are only valid if alone in a stmt and > uniform_vector_p will return false for a SSA_NAME. > > You could change the patch to be similar to what I originally did for > IFN_VEC_SHL_INSERT > (https://gcc.gnu.org/pipermail/gcc-patches/2024-July/658274.html); > though Richard had the same suggestion as I have above: > > For the case in question implementing fold_const_call would be better.
Implementing fold_const_call support should be done anyway, even better if not just handling uniform vectors there. You can still use uniform_vector_p to catch the vec_duplicate and some other cases through match.pd of course. Richard. > > > Thanks, > Andrew Pinski > > > > > > > > > > > > Jeff
