On Mon, May 2, 2016 at 10:02 AM, Richard Biener <richard.guent...@gmail.com> wrote: > On Fri, Apr 29, 2016 at 5:51 PM, Bin.Cheng <amker.ch...@gmail.com> wrote: >> On Thu, Apr 28, 2016 at 10:18 AM, Richard Biener >> <richard.guent...@gmail.com> wrote: >>> On Wed, Apr 27, 2016 at 5:49 PM, Bin Cheng <bin.ch...@arm.com> wrote: >>>> Hi, >>>> Currently tree if-conversion only supports PHIs with no more than two >>>> arguments unless the loop is marked with "simd pragma". This patch makes >>>> such PHIs supported unconditionally if they have no more than >>>> MAX_PHI_ARG_NUM arguments, thus cases like PR56541 can be fixed. Note >>>> because a chain of "?:" operators are needed to compute mult-arg PHI, this >>>> patch records the case and versions loop so that vectorizer can fall back >>>> to the original loop if if-conversion+vectorization isn't beneficial. >>>> Ideally, cost computation in vectorizer should be improved to measure >>>> benefit against the original loop, rather than if-converted loop. So far >>>> MAX_PHI_ARG_NUM is set to (4) because cases with more arguments are rare >>>> and not likely beneficial. >>>> >>>> Apart from above change, the patch also makes changes like: only split >>>> critical edge when we have to; cleanups code logic in >>>> if_convertible_loop_p about aggressive_if_conv. >>>> >>>> Bootstrap and test on x86_64 and AArch64, is it OK? >>> >>> Can you make this magic number a --param please? Otherwise ok. >> Hi, >> Here is the updated patch. I also added a vectorization test case >> since PR56541 was reported against it. >> Bootstrap & test on x86_64, is it OK? > > +/* { dg-options "-O3 -fdump-tree-ifcvt-stats" { target *-*-* } } */ > > you can omit { target *-*-* } here. > > Ok with that change. > Patch applied as suggested at r235808.
Thanks, bin