On Sun, Sep 6, 2015 at 2:46 PM, Ajit Kumar Agarwal
<ajit.kumar.agar...@xilinx.com> wrote:
> All:
>
> The cost and benefit associated for moving a given expression above 
> conditional  are the important factors for the performance boost.
>
> Considering the above, the cost and benefit calculation can be derived based 
> on below.
>
> For a given conditional entry point 'n', the benefit path 'p'  are the sub 
> paths that passes through 'n' and available and anticipatable at the 
> conditional
> Entry n.
>
> For a given conditional entry point 'n', the cost path 'p' are the sub paths 
> that passes through 'n' and are unavailable and un-anticipatable at the
> Conditional entry n.
>
> Thus the Benefit =  summation of the frequency of all the benefit paths as 
> given above.
> Cost = Summation of the frequency of all the cost paths as given above.
>
> Thus the movement of expression above the conditional can be enabled if the 
> Benefit > Cost as calculated above.
>
> The derivation above can be extended to Loop Invariant code motion.
>
> The above benefit and the cost derivation can be extended to the following 
> based on number of DEFs and use.
>
> Benefit = Summation of the frequency of all the benefit paths + summation of 
> (number  of defs * latency of store instruction)  of all benefit paths
> +summation of ( number of uses * latency of load instruction ) of all benefit 
> paths +  -  Summation of  ( Number of moves * latency of move instructions)
> Of all benefit paths.
>
> Cost =  Benefit = Summation of the frequency of all the cost paths + 
> summation of (number  of defs * latency of store instruction)  of all cost 
> paths
> +summation of ( number of uses * latency of load instruction ) of all cost 
> paths    -  Summation of  ( Number of moves * latency of move instructions)
> Of all cost paths
>
> The movement of the expressions above the condition and can be extended  to 
> LICM if the benefit is greater than cost.
>
> The above is feasible and quite efficient for the cost and Benefit allocation 
> for control flow code motion. This  above cost  somewhat equivalent to
> Cost of the Live range priority and  selection of coloring the live ranges 
> based on priority.

PRE kind-of considers this "locally" for each insert location, but the
data-flow driven solution doesn't know the "path" an
expression was coming from so I don't see how we could implement this
more "global" scheme.

Richard.

>
> Thanks & Regards
> Ajit

Reply via email to