http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46519

--- Comment #5 from hjl at gcc dot gnu.org <hjl at gcc dot gnu.org> 2010-11-24 
18:24:46 UTC ---
Author: hjl
Date: Wed Nov 24 18:24:39 2010
New Revision: 167124

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=167124
Log:
Improve vzeroupper optimization.

gcc/

2010-11-24  H.J. Lu  <hongjiu...@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...@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.

Added:
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-20.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-21.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-22.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-23.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-24.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-25.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-26.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/i386.h
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-10.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-11.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-14.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-15.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-16.c
    trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-17.c

Reply via email to