Message ID | VI1PR0802MB21768BD089A0E74CD6143825E7190@VI1PR0802MB2176.eurprd08.prod.outlook.com |
---|---|
State | New |
Headers | show |
On Tue, Apr 18, 2017 at 12:52 PM, Bin Cheng <Bin.Cheng@arm.com> wrote: > Hi, > Given only integer variables are meaningful for register pressure estimation in IVOPTs, > this patch skips non-integer type PHIs when counting register pressure. > Is it OK? Huh. I suppose it only makes a difference because you are ignoring POINTER_TYPE_P IVs? At least I would be surprised if get_iv returns true for float or vector PHIs (yeah, see early out in get_iv)? So why exclude POINTER_TYPE_P IVs? Richard. > Thanks, > bin > > 2017-04-11 Bin Cheng <bin.cheng@arm.com> > > * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger > when counting register pressure. >
On Wed, Apr 26, 2017 at 2:32 PM, Richard Biener <richard.guenther@gmail.com> wrote: > On Tue, Apr 18, 2017 at 12:52 PM, Bin Cheng <Bin.Cheng@arm.com> wrote: >> Hi, >> Given only integer variables are meaningful for register pressure estimation in IVOPTs, >> this patch skips non-integer type PHIs when counting register pressure. >> Is it OK? > > Huh. I suppose it only makes a difference because you are ignoring > POINTER_TYPE_P > IVs? At least I would be surprised if get_iv returns true for float > or vector PHIs (yeah, see > early out in get_iv)? So why exclude POINTER_TYPE_P IVs? Hmm, but if get_iv returns non-NULL, the phi won't be counted because loop is continued? Actually, all IV and invariants are skipped by checking get_iv, so this is only to skip floating point phis. Thanks, bin > > Richard. > >> Thanks, >> bin >> >> 2017-04-11 Bin Cheng <bin.cheng@arm.com> >> >> * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger >> when counting register pressure. >>
On Wed, Apr 26, 2017 at 3:37 PM, Bin.Cheng <amker.cheng@gmail.com> wrote: > On Wed, Apr 26, 2017 at 2:32 PM, Richard Biener > <richard.guenther@gmail.com> wrote: >> On Tue, Apr 18, 2017 at 12:52 PM, Bin Cheng <Bin.Cheng@arm.com> wrote: >>> Hi, >>> Given only integer variables are meaningful for register pressure estimation in IVOPTs, >>> this patch skips non-integer type PHIs when counting register pressure. >>> Is it OK? >> >> Huh. I suppose it only makes a difference because you are ignoring >> POINTER_TYPE_P >> IVs? At least I would be surprised if get_iv returns true for float >> or vector PHIs (yeah, see >> early out in get_iv)? So why exclude POINTER_TYPE_P IVs? > Hmm, but if get_iv returns non-NULL, the phi won't be counted because > loop is continued? Actually, all IV and invariants are skipped by > checking get_iv, so this is only to skip floating point phis. Err, but AFAICS get_iv will return non-NULL for POINTER_TYPE_P IVs which you then skip by your added + if (!INTEGRAL_TYPE_P (TREE_TYPE (op))) + continue; thus float IVs are always skipped by means if get_iv returning NULL. Oh, the get_iv check continues for non-NULL result ... so it makes sense. But still, why exclude POINTER_TYPE_P non-IV ops? Richard. > Thanks, > bin >> >> Richard. >> >>> Thanks, >>> bin >>> >>> 2017-04-11 Bin Cheng <bin.cheng@arm.com> >>> >>> * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger >>> when counting register pressure. >>>
On Wed, Apr 26, 2017 at 3:23 PM, Richard Biener <richard.guenther@gmail.com> wrote: > On Wed, Apr 26, 2017 at 3:37 PM, Bin.Cheng <amker.cheng@gmail.com> wrote: >> On Wed, Apr 26, 2017 at 2:32 PM, Richard Biener >> <richard.guenther@gmail.com> wrote: >>> On Tue, Apr 18, 2017 at 12:52 PM, Bin Cheng <Bin.Cheng@arm.com> wrote: >>>> Hi, >>>> Given only integer variables are meaningful for register pressure estimation in IVOPTs, >>>> this patch skips non-integer type PHIs when counting register pressure. >>>> Is it OK? >>> >>> Huh. I suppose it only makes a difference because you are ignoring >>> POINTER_TYPE_P >>> IVs? At least I would be surprised if get_iv returns true for float >>> or vector PHIs (yeah, see >>> early out in get_iv)? So why exclude POINTER_TYPE_P IVs? >> Hmm, but if get_iv returns non-NULL, the phi won't be counted because >> loop is continued? Actually, all IV and invariants are skipped by >> checking get_iv, so this is only to skip floating point phis. > > Err, but AFAICS get_iv will return non-NULL for POINTER_TYPE_P IVs > which you then skip by your added > > + if (!INTEGRAL_TYPE_P (TREE_TYPE (op))) > + continue; > > thus float IVs are always skipped by means if get_iv returning NULL. > > Oh, the get_iv check continues for non-NULL result ... so it makes sense. > But still, why exclude POINTER_TYPE_P non-IV ops? POINTER_TYPE_P is simply an overlook, will update patch. Thanks, bin > > Richard. > >> Thanks, >> bin >>> >>> Richard. >>> >>>> Thanks, >>>> bin >>>> >>>> 2017-04-11 Bin Cheng <bin.cheng@arm.com> >>>> >>>> * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger >>>> when counting register pressure. >>>>
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 0b9170c..db8254c 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -5583,6 +5583,9 @@ determine_set_costs (struct ivopts_data *data) if (get_iv (data, op)) continue; + if (!INTEGRAL_TYPE_P (TREE_TYPE (op))) + continue; + n++; }
Hi, Given only integer variables are meaningful for register pressure estimation in IVOPTs, this patch skips non-integer type PHIs when counting register pressure. Is it OK? Thanks, bin 2017-04-11 Bin Cheng <bin.cheng@arm.com> * tree-ssa-loop-ivopts.c (determine_set_costs): Skip non-interger when counting register pressure. From ea74dcacc97e4aee0de952dc0142d71502cc5252 Mon Sep 17 00:00:00 2001 From: Bin Cheng <binche01@e108451-lin.cambridge.arm.com> Date: Tue, 7 Mar 2017 16:26:27 +0000 Subject: [PATCH 28/33] skip-non_int-phi-reg-pressure-20170221.txt --- gcc/tree-ssa-loop-ivopts.c | 3 +++ 1 file changed, 3 insertions(+)