On Sun, Jan 18, 2026 at 9:10 PM Jeffrey Law
<[email protected]> wrote:
>
>
>
> On 1/12/2026 9:49 PM, Andrew Pinski 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.
> ACK.
>
>
> > 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:
> Yea, that does work for the testcase in question.
>
> OK now?  Passed riscv{32,64}-elf.  The bootstrap tests are still in flight.

LGTM.

>
>
> jeff
>

Reply via email to