This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: ivdep pragma not used in ddg.c?
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: Bingfeng Mei <bmei at broadcom dot com>,"gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Wed, 09 Jul 2014 17:57:01 +0200
- Subject: Re: ivdep pragma not used in ddg.c?
- Authentication-results: sourceware.org; auth=none
- References: <B71DF1153024A14EABB94E39368E44A6042D0EE6 at SJEXCHMB13 dot corp dot ad dot broadcom dot com>
On July 9, 2014 12:49:15 PM CEST, Bingfeng Mei <bmei@broadcom.com> wrote:
>Hi,
>I noticed recent GCC adds ivdep pragma support. We have our own
>implementation for ivdep for a couple of years now. As GCC
>implementation is much cleaner and we want to migrate to it. Ivdep is
>consumed in two places in our implementation, one is
>tree-vect-data-refs.c used by vectorizer, the other is in ddg.c, used
>by modulo scheduler. In GCC implementation, the former is the same, but
>ddg.c doesn't consume ivdep information at all. I think it is important
>not to draw redundant cross-iteration dependence if ivdep is specified
>in order to improve modulo scheduling performance.
>
>Looking at the code, I wonder whether loop->safelen still keep the
>correct information or whether loop structure still remain correct
>after so many tree/rtl passes. For example, in sms-schedule of
>modulo-sched.c
>
> loop_optimizer_init (LOOPS_HAVE_PREHEADERS
> | LOOPS_HAVE_RECORDED_EXITS);
>
>Does this mean loop structure is reinitialized? I know there is a flag
>(PROP_loops) which is supposed to preserve loop structure. But not sure
>what happens after all loop transformation (unrolling, peeling, etc).
>Is there a stage loop structure is rebuilt and we lost safelen (ivdep)
>information, or it is still safe to use in modulo scheduling pass?
Currently loop information is discarded after RTL loop optimizers because there is no later consumer. You'd have to extend lifetime if you add later users.
Richard.
>Thanks,
>Bingfeng