]> git.ipfire.org Git - thirdparty/gcc.git/commit
Improve vzeroupper optimization.
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Nov 2010 18:24:39 +0000 (18:24 +0000)
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 24 Nov 2010 18:24:39 +0000 (18:24 +0000)
commitb2d90e8b7ed8a1fd392978304e8bfdb295db6816
treeff51025a91389fdadda16f5296b0266c6edc4b5b
parentbb8ec5ddee4d2ad449d0a2684138209fb7322c38
Improve vzeroupper optimization.

gcc/

2010-11-24  H.J. Lu  <hongjiu.lu@intel.com>

PR target/46519
* config/i386/i386.c (upper_128bits_state): New.
(block_info_def): Remove upper_128bits_set and done.  Add state,
referenced, count, processed and rescanned.
(check_avx256_stores): Updated.
(move_or_delete_vzeroupper_2): Updated. Handle deleted BB_END.
Call note_stores only if needed.  Set referenced and count.
(move_or_delete_vzeroupper_1): Updated.  Set rescan_vzeroupper_p.
(rescan_move_or_delete_vzeroupper): New.
(move_or_delete_vzeroupper):  Process and rescan all all basic
blocks instead of predecessor blocks of all exit points.
(ix86_option_override_internal): Enable vzeroupper optimization
only for -fexpensive-optimizations and not optimizing for size.
(use_avx256_p): Removed.
(init_cumulative_args): Don't set use_avx256_p.
(ix86_function_arg): Likewise.
(ix86_expand_move): Likewise.
(ix86_expand_vector_move_misalign): Likewise.
(ix86_local_alignment): Likewise.
(ix86_minimum_alignment): Likewise.
(ix86_expand_epilogue): Don't check use_avx256_p when generating
vzeroupper.
(ix86_expand_call): Likewise.

* config/i386/i386.h (machine_function): Remove use_vzeroupper_p
and use_avx256_p.  Add rescan_vzeroupper_p.

gcc/testsuite/

2010-11-24  H.J. Lu  <hongjiu.lu@intel.com>

PR target/46519
* gcc.target/i386/avx-vzeroupper-10.c: Expect no avx_vzeroupper.
* gcc.target/i386/avx-vzeroupper-11.c: Likewise.

* gcc.target/i386/avx-vzeroupper-14.c: Replace -O0 with -O2.
* gcc.target/i386/avx-vzeroupper-15.c: Likewise.
* gcc.target/i386/avx-vzeroupper-16.c: Likewise.
* gcc.target/i386/avx-vzeroupper-17.c: Likewise.

* gcc.target/i386/avx-vzeroupper-20.c: New.
* gcc.target/i386/avx-vzeroupper-21.c: Likewise.
* gcc.target/i386/avx-vzeroupper-22.c: Likewise.
* gcc.target/i386/avx-vzeroupper-23.c: Likewise.
* gcc.target/i386/avx-vzeroupper-24.c: Likewise.
* gcc.target/i386/avx-vzeroupper-25.c: Likewise.
* gcc.target/i386/avx-vzeroupper-26.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167124 138bc75d-0d04-0410-961f-82ee72b054a4
17 files changed:
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/avx-vzeroupper-10.c
gcc/testsuite/gcc.target/i386/avx-vzeroupper-11.c
gcc/testsuite/gcc.target/i386/avx-vzeroupper-14.c
gcc/testsuite/gcc.target/i386/avx-vzeroupper-15.c
gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c
gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c
gcc/testsuite/gcc.target/i386/avx-vzeroupper-20.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx-vzeroupper-21.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx-vzeroupper-22.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx-vzeroupper-23.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx-vzeroupper-24.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx-vzeroupper-25.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx-vzeroupper-26.c [new file with mode: 0644]