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