On Fri, 2019-01-25 at 10:32 +0000, Richard Earnshaw (lists) wrote:
> 
> Do we need another variant pattern to handle the case where the
> insertion is into the top of the destination?  In that case the
> immediate mask on the shifted operand is technically redundant as the
> bottom bits are known zero and there are no top bits.

I am not sure about this.  Do you have an example where this might be
needed?

I updated my patch to address your other comments and have bootstrapped
and tested this on aarch64.  Does this version look good for checkin?
I had to modify the two tests because with my new instructions we
sometimes generate bfi instructions where we used to generate bfxil
instructions.  The only regression this is fixing is combine_bfi_1.c,
combine_bfxil.c was passing before but still needed to be changed in
order to keep passing.

Steve Ellcey
sell...@marvell.com


2018-01-25  Steve Ellcey  <sell...@marvell.com>

        PR rtl-optimization/87763
        * config/aarch64/aarch64-protos.h (aarch64_masks_and_shift_for_bfi_p):
        New prototype.
        * config/aarch64/aarch64.c (aarch64_masks_and_shift_for_bfi_p):
        New function.
        * config/aarch64/aarch64.md (*aarch64_bfi<GPI:mode>4_shift):
        New instruction.
        (*aarch64_bfi<GPI:mode>4_noshift): Ditto.


2018-01-25  Steve Ellcey  <sell...@marvell.com>

        PR rtl-optimization/87763
        * gcc.target/aarch64/combine_bfi_1.c: Change some bfxil checks
        to bfi.
        * gcc.target/aarch64/combine_bfxil.c: Ditto.

Reply via email to