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 various avx512 extraction issues (PR target/80206)


Hi Jakub,
On 30 Mar 00:36, Jakub Jelinek wrote:
> Hi!
>
> As the testcase shows, we ICE with -mavx512f -ffloat-store, because
> at -O0 during expansion the destination is MEM, and the corresponding dup
> operand is some pseudo.  There are *_mask patterns that have just
> register_operand / =v for the desination and vector_move_operand / 0C
> for the corresponding dup operand (but this doesn't apply when the
> destination is MEM), and then *_maskm patterns, that have
> memory_operand / =m and corresponding dup operand memory_operand / 0,
> but also requires rtx_equal_p between them in the condition, so that
> doesn't match either.
> The expanders have weirdo:
>   if (MEM_P (operands[0]) && GET_CODE (operands[3]) == CONST_VECTOR)
>     operands[0] = force_reg (<ssequartermode>mode, operands[0]);
> which can't really ever work, because the expander's caller expects
> the output to be stored in the original operands[0], but that is not
> where it stores it.  Furthermore, force_reg makes no sense for the
> output operand.
>
> The following patch should fix that, bootstrapped/regtested on x86_64-linux
> and i686-linux, ok for trunk?
Patch is OK for trunk.

--
Thanks, K


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