On Mon, Feb 11, 2019 at 2:29 PM H.J. Lu <hjl.to...@gmail.com> wrote:

> > No. As said, please correctly set mode to XImode in mode attribute 
> > calculation.
>
> There is
>
>  switch (get_attr_type (insn))
>     {
>     case TYPE_SSELOG1:
>       return standard_sse_constant_opcode (insn, operands);
>
> standard_sse_constant_opcode has
>
> else if (x == constm1_rtx || vector_all_ones_operand (x, mode))
>     {
>       enum attr_mode insn_mode = get_attr_mode (insn);
>
>       switch (insn_mode)
>         {
>         case MODE_XI:
>         case MODE_V8DF:
>         case MODE_V16SF:
>           gcc_assert (TARGET_AVX512F);
>           return "vpternlogd\t{$0xFF, %g0, %g0, %g0|%g0, %g0, %g0, 0xFF}";

If there is something wrong with standard_sse_constant_opcode, then
fix the problem in the function itself. With your previous patch, you
introduced a regression, and the presented fix is another kludge to
fix a stack of kludges inside standard_sse_constant_opcode.

Please take your time and propose some acceptable solution that would
put some logic into const_0/const_1 handling. The situation is not OK
and your patch makes it even worse.

Uros.

Reply via email to