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.