This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Make more use of register insv and ext*v expanders


Richard Sandiford <richard@codesourcery.com> writes:

> gcc/
> 	* expr.h (store_bit_field): Don't return a value.
> 	* expmed.c (check_predicate_volatile_ok): New function.
> 	(store_bit_field_1): New function, extracted from store_bit_field.
> 	Take a fallback_p argument and return true if the operation succeeded.
> 	Only use store_fixed_bit_field if fallback_p.  Don't recompute
> 	mode_for_extraction; use op_mode instead.  Try forcing memories
> 	into registers if the insv expander fails.
> 	(store_bit_field): Use store_bit_field_1 with fallback_p true.
> 	Don't return a value.
> 	(convert_extracted_bit_field): New function, extracted from
> 	store_bit_field.
> 	(extract_bit_field_1): Likewise.  Take a fallback_p argument
> 	and return NULL if the operation succeeded.  Only use
> 	extract_fixed_bit_field if fallback_p.  Only calculate one
> 	extraction mode.  Combine code for extv and extzv.  Try forcing
> 	memories into registers if the ext(z)v expander fails.
> 	(extract_bit_field): Use extract_bit_field_1 with fallback_p true.
> 
> gcc/testsuite/
> 	* gcc.target/mips/ins-1.c: New test.

This is OK.

Thanks.

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]