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] |
On Fri, Nov 9, 2012 at 2:28 PM, Uros Bizjak <ubizjak@gmail.com> wrote: > Finally, having a post-reload mode-switching pass, we can double-check > that there are no live SSE registers at vzeroupper insertion point. As > vzeroupper is only an optimization, we want to play safe and cancel > vzeroupper insertion in this case > > There is no degradation for x86_64 gABI targets, since all SSE > registers are call-clobbered. Vzeroupper is conditionally inserted > just before call insn, where all registers are saved to stack and > already dead. The vzeroupper at function exit is not problematic. Patch was committed to mainline SVN with the following ChangeLog: 2012-11-16 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386-protos.h (ix86_emit_mode_set): Add third argument. * config/i386/i386.h (EMIT_MODE_SET): Update. * config/i386/i386.c (ix86_avx_emit_vzeroupper): New function. (ix86_emit_mode_set) <AVX_U128>: Call ix86_avx_emit_vzeroupper. Bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32}, configured with --with-arch=corei7-avx --with-tune=corei7-avx. Uros.
Attachment:
p.diff.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |