summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/avx-vzeroupper-25.c
diff options
context:
space:
mode:
authorhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-24 18:24:39 +0000
committerhjl <hjl@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-24 18:24:39 +0000
commitb2d90e8b7ed8a1fd392978304e8bfdb295db6816 (patch)
treeff51025a91389fdadda16f5296b0266c6edc4b5b /gcc/testsuite/gcc.target/i386/avx-vzeroupper-25.c
parentbb8ec5ddee4d2ad449d0a2684138209fb7322c38 (diff)
downloadgcc-b2d90e8b7ed8a1fd392978304e8bfdb295db6816.tar.gz
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
Diffstat (limited to 'gcc/testsuite/gcc.target/i386/avx-vzeroupper-25.c')
-rw-r--r--gcc/testsuite/gcc.target/i386/avx-vzeroupper-25.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/i386/avx-vzeroupper-25.c b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-25.c
new file mode 100644
index 00000000000..5ef49c7d32d
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/avx-vzeroupper-25.c
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -mavx -mtune=generic -dp" } */
+
+#include <immintrin.h>
+
+extern __m256 x, y;
+
+void
+foo ()
+{
+ x = y;
+}
+
+/* { dg-final { scan-assembler-not "avx_vzeroupper" } } */