[Bug target/82941] Missing vzeroupper with -march=skylake-avx512 -O2

speryt at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Nov 15 12:28:00 GMT 2017


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82941

--- Comment #2 from speryt at gcc dot gnu.org ---
Author: speryt
Date: Wed Nov 15 12:27:31 2017
New Revision: 254763

URL: https://gcc.gnu.org/viewcvs?rev=254763&root=gcc&view=rev
Log:
Fix PR82941 and PR82942 by adding proper vzeroupper generation on SKX. 

2017-11-15  Sebastian Peryt  <sebastian.peryt@intel.com>

gcc/

        PR target/82941
        PR target/82942
        * config/i386/i386.c (pass_insert_vzeroupper): Modify gate condition
        to return true on Xeon and not on Xeon Phi.
        (ix86_check_avx256_register): Changed to ...
        (ix86_check_avx_upper_register): ... this. Add extra check for
        VALID_AVX512F_REG_OR_XI_MODE.
        (ix86_avx_u128_mode_needed): Changed
        ix86_check_avx256_register to ix86_check_avx_upper_register.
        (ix86_check_avx256_stores): Changed to ...
        (ix86_check_avx_upper_stores): ... this. Changed
        ix86_check_avx256_register to ix86_check_avx_upper_register.
        (ix86_avx_u128_mode_after): Changed
        avx_reg256_found to avx_upper_reg_found. Changed
        ix86_check_avx256_stores to ix86_check_avx_upper_stores.
        (ix86_avx_u128_mode_entry): Changed
        ix86_check_avx256_register to ix86_check_avx_upper_register.
        (ix86_avx_u128_mode_exit): Ditto.
        * config/i386/i386.h: (host_detect_local_cpu): New define.

2017-11-15  Sebastian Peryt  <sebastian.peryt@intel.com>

gcc/testsuite/

        PR target/82941
        PR target/82942
        * gcc.target/i386/pr82941-1.c: New test.
        * gcc.target/i386/pr82941-2.c: New test.
        * gcc.target/i386/pr82942-1.c: New test.
        * gcc.target/i386/pr82942-2.c: New test.


Added:
    trunk/gcc/testsuite/gcc.target/i386/pr82941-1.c
    trunk/gcc/testsuite/gcc.target/i386/pr82941-2.c
    trunk/gcc/testsuite/gcc.target/i386/pr82942-1.c
    trunk/gcc/testsuite/gcc.target/i386/pr82942-2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/i386.h
    trunk/gcc/testsuite/ChangeLog


More information about the Gcc-bugs mailing list