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: [PATCH] Fix vec_extract_lo_* patterns (PR target/81225)


Hello Jakub,
On 29 Jun 18:51, Jakub Jelinek wrote:
> Hi!
> 
> This patch fixes various issues with the vec_extract_lo_* patterns.
> There are splitters for these, but only for some cases (no mask, and
> in one case also not xmm32+ reg) that change those into just a copy or load
> of the low part subreg, but if those can't be used, the vextract* insns
> don't accept memory input operand, but 3 of the 4 patterns have
> nonimmediate_operand input, which is wrong for the masked case, and the
> other one uses register_operand, even when the splitter can handle
> nonimmediate_operand when not masked.
> 
> Thus this patch makes sure that the input is nonimmediate_operand and v,vm
> if not masked and register_operand and v,v if masked, returns "#" to ensure
> splitting in cases the input is a memory, simplifies the conditions (for
> masked we don't need to test at runtime if both arguments aren't MEMs,
> because the predicate is now register_operand with v constraint), and
> changes the single case that used register_operand to follow the rest.
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
Your patch is OK for trunk.

> 
> 2017-06-29  Jakub Jelinek  <jakub@redhat.com>
> 
> 	PR target/81225
> 	* config/i386/sse.md (vec_extract_lo_<mode><mask_name>): For
> 	V8FI, V16FI and VI8F_256 iterators, use <store_mask_predicate> instead
> 	of nonimmediate_operand and <store_mask_constraint> instead of m for
> 	the input operand.  For V8FI iterator, always split if input is a MEM.
> 	For V16FI and V8SF_256 iterators, don't test if both operands are MEM
> 	if <mask_applied>.  For VI4F_256 iterator, use <store_mask_predicate>
> 	instead of register_operand and <store_mask_constraint> instead of v for
>         the input operand.  Make sure both operands aren't MEMs for if not
> 	<mask_applied>.
> 
> 	* gcc.target/i386/pr81225.c: New test.

--
Thanks, K


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