Hi, Please have a look at updated patch. 2014-10-22 Petr Murzin <[email protected]>
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 <[email protected]> wrote:
> On 09/16/14 13:40, Andrew Pinski wrote:
>>
>> On Tue, Sep 16, 2014 at 4:40 AM, Petr Murzin <[email protected]>
>> wrote:
>>>
>>> Hi,
>>> This patch allows merging of extract and insert. Please have a look.
>>>
>>> 2014-09-16 Petr Murzin <[email protected]>
>>>
>>> * 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
extract_insert_patch
Description: Binary data
