This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] PR47440 - Use LCM for vzeroupper insertion
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Владимир Яковлев <vbyakovl23 at gmail dot com>
- Date: Thu, 23 Aug 2012 11:53:17 +0200
- Subject: Re: [PATCH] PR47440 - Use LCM for vzeroupper insertion
Hello!
> 2012-08-25 Vladimir Yakovlev <vladimir.b.yakovlev@intel.com>
>
> * config/epiphany/epiphany.h (EMIT_MODE_SET): Added an argument.
>
> * 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
> (is_vzeroupper): New
> (is_vzeroall): Likewise
> (ix86_avx_u128_mode_needed): Likewise
> (x86_mode_needed): Addad a switch case for AVX_U128
> (x86_avx_u128_mode_after): New
> (x86_mode_after): Likewise
> (ix86_avx_u128_mode_entry): Likewise
> (ix86_mode_entry): Likewise
> (x86_avx_u128_mode_exit): Likewise
> (ix86_mode_exit): Likewise
> (x86_emit_vzeroupper): Likewise
> (ix86_emit_mode_set): Likewise
> (x86_expand_call): Deleted vzeroupper generation
> (ix86_split_call_vzeroupper): Deleted
> (x86_init_machine_status): Initialzed optimize_mode_switching
> (ix86_expand_special_args_builtin): Changed
> (ix86_reorg): Deletd a call of move_or_delete_vzeroupper.
>
> * config/i386/i386.h (AVX_U128): New
> (NUM_MODES_FOR_MODE_SWITCHING): Added AVX_U128_ANY
> (MODE_AFTER): New
> (MODE_ENTRY): Likewise
> (MODE_EXIT): Likewise
> (EMIT_MODE_SET): Changed
> (machine_function): Deleted avx256 fields.
>
> * config/i386/i386.md (UNSPEC_CALL_NEEDS_VZEROUPPER): Deleted
> (define_insn_and_split "*call_vzeroupper): Likewise.
> (define_insn_and_split "*call_rex64_ms_sysv_vzeroupper"): Likewise
> (define_insn_and_split "*sibcall_vzeroupper"): Likewise
> (define_insn_and_split "*call_pop_vzeroupper"): Likewise
> (define_insn_and_split "*sibcall_pop_vzeroupper"): Likewise
> (define_insn_and_split "*call_value_vzeroupper"): Likewise
> (define_insn_and_split "*sibcall_value_vzeroupper"): Likewise
> (define_insn_and_split "*call_value_rex64_ms_sysv_vzeroupper"): Likewise
> (define_insn_and_split "*call_value_pop_vzeroupper"): Likewise
> (define_insn_and_split "*sibcall_value_pop_vzeroupper"): Likewise
> (define_expand "return"): Delete vzeroupper emitting
> (define_expand "simple_return"): Likewise.
>
> * config/sh/sh.h (MODE_AFTER): Added an argument
> (EMIT_MODE_SET): Likewise.
>
> * mode-switching.c (transp): Changed type
> (make_preds_opaque): Added an argument
> (optimize_mode_switching): Added code for VZEROUPPER elemination.
>
> 2012-08-20 Vladimir Yakovlev <vladimir.b.yakovlev@intel.com>
>
> * 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
Please split middle-end changes and improvements out of the patch to
discuss these changes with middle-end people first.
After these changes are approved, we will proceed with target-dependent changes.
Uros.