This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][RTL-ifcvt] Make non-conditional execution if-conversion more aggressive
- From: Jeff Law <law at redhat dot com>
- To: "Zamyatin, Igor" <igor dot zamyatin at intel dot com>, Kyrill Tkachov <kyrylo dot tkachov at arm dot com>, Steven Bosscher <stevenb dot gcc at gmail dot com>
- Cc: Bernhard Reutner-Fischer <rep dot dot dot nop at gmail dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 2 Sep 2015 14:58:33 -0600
- Subject: Re: [PATCH][RTL-ifcvt] Make non-conditional execution if-conversion more aggressive
- Authentication-results: sourceware.org; auth=none
- References: <559FBB13 dot 80009 at arm dot com> <CAC1BbcSjSYHd2j==dSwrjuMTrDvgnwrJJ2941k89aLEqnt49xg at mail dot gmail dot com> <55A388D3 dot 10506 at arm dot com> <55A3C53F dot 7080706 at arm dot com> <55B150D4 dot 5030909 at redhat dot com> <55B205F5 dot 3080005 at arm dot com> <55B28737 dot 5040403 at redhat dot com> <55B60525 dot 1060404 at arm dot com> <55B657B2 dot 70708 at redhat dot com> <55B65EFA dot 7010601 at arm dot com> <55B75601 dot 7050808 at arm dot com> <55BBAFAC dot 5020608 at redhat dot com> <CABu31nN3gvV3D1siu0B5cBh28J11oFrnXRUHvjV7x0Knk7ha0Q at mail dot gmail dot com> <55CA2B56 dot 4050804 at redhat dot com> <55CA2C36 dot 6030001 at arm dot com> <55CB58CD dot 9040701 at arm dot com> <55D4B58F dot 3080609 at redhat dot com> <55D4BAE4 dot 9090403 at arm dot com> <0EFAB2BDD0F67E4FB6CCC8B9F87D75696AA6EE48 at IRSMSX101 dot ger dot corp dot intel dot com>
On 09/02/2015 09:18 AM, Zamyatin, Igor wrote:
On 19/08/15 17:57, Jeff Law wrote:
On 08/12/2015 08:31 AM, Kyrill Tkachov wrote:
2015-08-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* ifcvt.c (struct noce_if_info): Add then_simple, else_simple,
then_cost, else_cost fields. Change branch_cost field to
unsigned int.
(end_ifcvt_sequence): Call set_used_flags on each insn in the
sequence.
Include rtl-iter.h.
(noce_simple_bbs): New function.
(noce_try_move): Bail if basic blocks are not simple.
(noce_try_store_flag): Likewise.
(noce_try_store_flag_constants): Likewise.
(noce_try_addcc): Likewise.
(noce_try_store_flag_mask): Likewise.
(noce_try_cmove): Likewise.
(noce_try_minmax): Likewise.
(noce_try_abs): Likewise.
(noce_try_sign_mask): Likewise.
(noce_try_bitop): Likewise.
(bbs_ok_for_cmove_arith): New function.
(noce_emit_all_but_last): Likewise.
(noce_emit_insn): Likewise.
(noce_emit_bb): Likewise.
(noce_try_cmove_arith): Handle non-simple basic blocks.
(insn_valid_noce_process_p): New function.
(contains_mem_rtx_p): Likewise.
(bb_valid_for_noce_process_p): Likewise.
(noce_process_if_block): Allow non-simple basic blocks
where appropriate.
2015-08-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.dg/ifcvt-1.c: New test.
* gcc.dg/ifcvt-2.c: Likewise.
* gcc.dg/ifcvt-3.c: Likewise.
Looks like ifcvt-3.c fails on x86_64. I see
New failures:
FAIL: gcc.dg/ifcvt-3.c scan-rtl-dump ce1 "3 true changes made"
Could you please take a look?
Hmm, FWIW, these are passing in my builds/tests:
[law@localhost c-family]$ grep ifcvt-3 /tmp/gcc.sum
PASS: gcc.dg/ifcvt-3.c (test for excess errors)
PASS: gcc.dg/ifcvt-3.c scan-rtl-dump ce1 "3 true changes made"
PASS: gcc.dg/vect/vect-ifcvt-3.c (test for excess errors)
PASS: gcc.dg/vect/vect-ifcvt-3.c -flto -ffat-lto-objects
scan-tree-dump-times vect "vectorized 1 loops" 1
PASS: gcc.dg/vect/vect-ifcvt-3.c -flto -ffat-lto-objects (test for
excess errors)
PASS: gcc.dg/vect/vect-ifcvt-3.c -flto -ffat-lto-objects execution test
PASS: gcc.dg/vect/vect-ifcvt-3.c execution test
PASS: gcc.dg/vect/vect-ifcvt-3.c scan-tree-dump-times vect "vectorized 1
loops" 1
Jeff