From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32326 invoked by alias); 6 Nov 2012 18:04:08 -0000 Received: (qmail 32228 invoked by uid 48); 6 Nov 2012 18:03:43 -0000 From: "ubizjak at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/47440] Use LCM for vzeroupper insertion Date: Tue, 06 Nov 2012 18:04:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: ubizjak at gmail dot com X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: vbyakovl23 at gmail dot com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2012-11/txt/msg00505.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47440 --- Comment #5 from Uros Bizjak 2012-11-06 18:03:40 UTC --- Author: kyukhin Date: Tue Nov 6 10:29:23 2012 New Revision: 193229 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=193229 Log: * config/i386/i386-protos.h (emit_i387_cw_initialization): Deleted. (emit_vzero): Added prototype. (ix86_mode_entry): Likewise. (ix86_mode_exit): Likewise. (ix86_emit_mode_set): Likewise. * config/i386/i386.c (typedef struct block_info_def): Deleted. (define BLOCK_INFO): Deleted. (check_avx256_stores): Added checking for MEM_P. (move_or_delete_vzeroupper_2): Deleted. (move_or_delete_vzeroupper_1): Deleted. (move_or_delete_vzeroupper): Deleted. (ix86_maybe_emit_epilogue_vzeroupper): Deleted. (function_pass_avx256_p): Deleted. (ix86_function_ok_for_sibcall): Deleted disabling sibcall. (nit_cumulative_args): Deleted initialization of of avx256 fields of cfun->machine. (ix86_emit_restore_sse_regs_using_mov): Deleted vzeroupper generation. (ix86_expand_epilogue): Likewise. (ix86_avx_u128_mode_needed): New. (ix86_i387_mode_needed): Renamed ix86_mode_needed. (ix86_mode_needed): New. (ix86_avx_u128_mode_after): New. (ix86_mode_after): New. (ix86_avx_u128_mode_entry): New. (ix86_mode_entry): New. (ix86_avx_u128_mode_exit): New. (ix86_mode_exit): New. (ix86_emit_mode_set): New. (ix86_expand_call): Deleted vzeroupper generation. (ix86_split_call_vzeroupper): Deleted. (ix86_init_machine_status): Initialzed optimize_mode_switching. (ix86_expand_special_args_builtin): Changed. (ix86_reorg): Deleted a call of move_or_delete_vzeroupper. * config/i386/i386.h (VALID_AVX256_REG_OR_OI_MODE): New. (AVX_U128): New. (avx_u128_state): New. (NUM_MODES_FOR_MODE_SWITCHING): Added AVX_U128_ANY. (MODE_AFTER): New. (MODE_ENTRY): New. (MODE_EXIT): New. (EMIT_MODE_SET): Changed. (machine_function): Deleted avx256 fields. * config/i386/i386.md (UNSPEC_CALL_NEEDS_VZEROUPPER): Deleted. (define_insn_and_split "*call_vzeroupper"): Deleted. (define_insn_and_split "*call_rex64_ms_sysv_vzeroupper"): Deleted. (define_insn_and_split "*sibcall_vzeroupper"): Deleted. (define_insn_and_split "*call_pop_vzeroupper"): Deleted. (define_insn_and_split "*sibcall_pop_vzeroupper"): Deleted. (define_insn_and_split "*call_value_vzeroupper"): Deleted. (define_insn_and_split "*sibcall_value_vzeroupper"): Deleted. (define_insn_and_split "*call_value_rex64_ms_sysv_vzeroupper"): Deleted. (define_insn_and_split "*call_value_pop_vzeroupper"): Deleted. (define_insn_and_split "*sibcall_value_pop_vzeroupper"): Deleted. (define_expand "return"): Deleted vzeroupper emitting. (define_expand "simple_return"): Deleted. * config/i386/predicates.md (vzeroupper_operation): New. * config/i386/sse.md (avx_vzeroupper): Changed. testsuite/ChangeLog: * gcc.target/i386/avx-vzeroupper-5.c: Changed scan-assembler-times. * gcc.target/i386/avx-vzeroupper-8.c: Likewise. * gcc.target/i386/avx-vzeroupper-9.c: Likewise. * gcc.target/i386/avx-vzeroupper-10.c: Likewise. * gcc.target/i386/avx-vzeroupper-11.c: Likewise. * gcc.target/i386/avx-vzeroupper-12.c: Likewise. * gcc.target/i386/avx-vzeroupper-19.c: Likewis. * gcc.target/i386/avx-vzeroupper-27.c: New. Added: trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-27.c Modified: trunk/gcc/ChangeLog trunk/gcc/config/i386/i386-protos.h trunk/gcc/config/i386/i386.c trunk/gcc/config/i386/i386.h trunk/gcc/config/i386/i386.md trunk/gcc/config/i386/predicates.md trunk/gcc/config/i386/sse.md 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-12.c trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-19.c trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-5.c trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-8.c trunk/gcc/testsuite/gcc.target/i386/avx-vzeroupper-9.c