[llvm-commits] [PATCH] Phi node folding improvements

Peter Collingbourne peter at pcc.me.uk
Mon Apr 18 09:29:17 PDT 2011


On Thu, Oct 14, 2010 at 03:23:45AM +0100, Peter Collingbourne wrote:
> Hi Chris,
> 
> On Sun, Sep 05, 2010 at 01:16:25PM -0700, Chris Lattner wrote:
> > 
> > On Jul 30, 2010, at 1:15 PM, Peter Collingbourne wrote:
> > 
> > > Hi,
> > > 
> > > The attached patches improve the flexibility of the phi node folding
> > > mechanism by assigning a cost to each non-trapping instruction and
> > > allowing the user to specify a maximum cost threshold.  By increasing
> > > the threshold the user can apply phi node folding to more complex
> > > expressions.
> > > 
> > > I developed this patch as part of my work with the Klee symbolic
> > > virtual machine, which can handle symbolic expressions containing
> > > selects more efficiently than branches conditional on symbolic
> > > expressions.  However I imagine it could also provide an advantage on
> > > architectures with relatively expensive branch operations (I haven't
> > > done any experiments to determine if this is the case though).
> > > 
> > > The patches should not contain any changes to default functionality,
> > > except for adding more instructions to the list of "cheap" (folded
> > > by default) instructions.
> > 
> > Hi Peter,
> > 
> > Sorry for the delay on this.  The first patch certainly looks ok, but we need testcases for each of these changes.
> 
> I've now revised the patch series.  The main difference versus the
> previous series is that the supplied cost threshold applies to both
> predecessors independently of each other rather than taking the
> combined cost (which is why the default is now 1).  The threshold
> now roughly represents the maximum potential amount of 'wasted' work,
> which I imagine could be a factor that would be weighed against the
> cost of branching on a specific architecture.
> 
> I have also added test cases, which include test cases to ensure
> that the changes do not in fact change default functionality.

Ping.  I've also refreshed the patches against trunk.

Thanks,
-- 
Peter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-Trunc-ZExt-and-SExt-to-the-list-of-cheap-instruc.patch
Type: text/x-diff
Size: 2210 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20110418/d186aa40/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-Add-CostRemaining-parameter-to-DominatesMergePoint.patch
Type: text/x-diff
Size: 5531 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20110418/d186aa40/attachment-0001.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0003-Expose-phi-node-folding-cost-threshold-as-command-li.patch
Type: text/x-diff
Size: 2952 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20110418/d186aa40/attachment-0002.patch>


More information about the llvm-commits mailing list