Hi,
Please have a look at updated patch.

2014-10-22  Petr Murzin  <petr.mur...@intel.com>

gcc/
        * simplify-rtx.c (simplify_ternary_operation): Simplify
          vec_merge (vec_duplicate (vec_select)).

gcc/testsuite/
        * gcc.target/i386/extract-insert-combining.c: New.

On Fri, Sep 19, 2014 at 1:43 AM, Jeff Law <l...@redhat.com> wrote:
> On 09/16/14 13:40, Andrew Pinski wrote:
>>
>> On Tue, Sep 16, 2014 at 4:40 AM, Petr Murzin <petrmurz...@gmail.com>
>> wrote:
>>>
>>> Hi,
>>> This patch allows merging of extract and insert. Please have a look.
>>>
>>> 2014-09-16  Petr Murzin  <petr.mur...@intel.com>
>>>
>>> * simplify-rtx.c (simplify_ternary_operation): Allow extract and
>>> insert merging.
>>
>>
>> Besides no testcase.  Can your changelog mention vectors because I
>> thought from the description you were working on bits.
>
> Similarly :-)
>
> So a few more nits.  ChangeLog format is
>
>         * file (function): What changed.
>
> So something like
>
>         * simplify-rtx.c (simplify_ternary_operation): Simplify
>         (vec_merge (vec_duplicate (vec_select ...)) in some cases.
>
>
> +          /* Replace (vec_merge (vec_duplicate (vec_select a parallel (0)))
> a 1)
> +              with a.  */
> +           if (GET_CODE (op0) == VEC_DUPLICATE
> +               && GET_CODE (XEXP (op0, 0)) == VEC_SELECT
> +               && GET_CODE (XEXP (XEXP (op0, 0), 1)) == PARALLEL)
> +             {
> +               tem = XVECEXP ((XEXP (XEXP (op0, 0), 1)), 0, 0);
> +               if (CONST_INT_P (tem) && CONST_INT_P (op2))
> +                 {
> +                   if (XEXP (XEXP (op0, 0), 0) == op1 && UINTVAL (tem) == 0
> +                       && UINTVAL (op2) == 1)
>
> Line break before the first && UINTVAL.  ie, format it like this:
>
> if (XEXP (XEXP ...)
>     && UINTVAL (tem) == 0
>     && UINTVAL (op2) == 1
>
>
> And definitely include a testcase and repost for further review.
>
> Thanks,
> Jeff

Attachment: extract_insert_patch
Description: Binary data

Reply via email to