Hi Ricard,

You are right I no need the changes in mode-switchig.c at all. After I
remove additional argument from  EMIT_MODE_SET and run 'make check' I
found no differences with make check result of previous run. So I no
need in any changes in the middle end part.

Regards,
Vladimir

P.S.  I'll be in vacation till end of nonth.

> Vladimir Yakovlev <vbyakov...@gmail.com> writes:
>> I reproduced the failure and found reason of it. I understood haw it
>> resolve and now I need small changes only - additional argument of
>> EMIT_MODE_SET. Is it good fo trunk?
>
> I'm not sure I understand why you need to know the instruction.
> The x86 code was:
>
> +      if (mode == AVX_U128_CLEAN)
> +       {
> +         if (insn)
> +           {
> +             rtx pat = PATTERN(insn);
> +             if (!is_vzeroupper(pat) && !is_vzeroall(pat))
> +               ix86_emit_vzeroupper ();
> +           }
> +         else
> +           ix86_emit_vzeroupper ();
> +       }
> +      break;
>
> But the pass should already know via MODE_AFTER that the mode is set to
> AVX_U128_CLEAN by vzeroupper and vzeroall.  Under what circumstances
> do we think that we need to set the mode to AVX_U128_CLEAN immediately
> before vzeroupper or vzeroall?
>
> I'm probably making you repeat yourself here, sorry.
>
> Richard


2012/9/16 Richard Sandiford <rdsandif...@googlemail.com>:
> Vladimir Yakovlev <vbyakov...@gmail.com> writes:
>> I reproduced the failure and found reason of it. I understood haw it
>> resolve and now I need small changes only - additional argument of
>> EMIT_MODE_SET. Is it good fo trunk?
>
> I'm not sure I understand why you need to know the instruction.
> The x86 code was:
>
> +      if (mode == AVX_U128_CLEAN)
> +       {
> +         if (insn)
> +           {
> +             rtx pat = PATTERN(insn);
> +             if (!is_vzeroupper(pat) && !is_vzeroall(pat))
> +               ix86_emit_vzeroupper ();
> +           }
> +         else
> +           ix86_emit_vzeroupper ();
> +       }
> +      break;
>
> But the pass should already know via MODE_AFTER that the mode is set to
> AVX_U128_CLEAN by vzeroupper and vzeroall.  Under what circumstances
> do we think that we need to set the mode to AVX_U128_CLEAN immediately
> before vzeroupper or vzeroall?
>
> I'm probably making you repeat yourself here, sorry.
>
> Richard

Reply via email to