| J. Knoop, O. Ruthing, and B. Steffen. Lazy strength reduction. Journal of Programming Languages, 1(1):71-- 91, 1993. |
.... described a sophisticated algorithm that combines strength reduction with reassociation [37] Sites looked at the related issue of minimizing the number of loop induction variables [43] Data flow Methods A second family of techniques has grown up around the literature of data flow analysis [21, 29, 22, 34]. These methods incorporate all of the strengths of work in data flow based optimization, particularly the careful code placement techniques developed for partial redundancy elimination [38] The data flow methods for strength reduction require none of the control flow analysis needed by ack and ....
J. Knoop, O. Ruthing, and B. Steffen. Lazy strength reduction. Journal of Programming Languages, 1(1):71-- 91, 1993.
....expressions producing values known at compile time. Conceptually, constant expressions are redundant because there is a compile time expression from which the value flows to the (redundant) constant expression executed at run time. Strength Reduction is another value flow optimization [DI80, KRS93] Rather than reusing the flowing value directly, it is used to find a cheaper way to compute the result of the expression. Partial Dead Code Elimination [KRS94c] eliminates statements that compute a value that will not be used in the remainder of the program. While all these optimizations share ....
....in [KRS94c] maximizes optimization that is possible with code motion alone. Dead values that cannot be removed with code motion must be eliminated through restructuring, as shown in [BG97a] Strength reduction (an extension of PRE) has so far been presented as code motion optimization [DI80,KRS93] Clearly, the four transformations differ in their power and cost [BGS98a] Deletion is only applicable on fully redundant operations, hence not suitable for path sensitive optimizations. While code motion is economical in that it does not increase code size, it is less powerful than ....
Jens Knoop, O. Ruthing, and Bernhard Steffen. Lazy strength reduction. International Journal of Programming Languages, 1:71--91, 1993.
....straightforward. Peameal, however, does not use the traditional Morel Renvoise formulation of PRE used in oynk. Instead, we use the lazy code motion formulation of PRE proposed by Knoop, Ruthing, and Steffen [1] Peameal also implements lazy strength reduction , as proposed by the same authors [2]. The lazy formulation offers several advantages over the older formulation. It uses only unidirectional data flow problems while the older formulation uses bidirectional problems. This property simplifies the data flow analysis steps. It moves code to their optimal position for expression code ....
Jens Knoop, Oliver Ruthing, and Bernhard Steffen. Lazy Strength Reduction. In Journal of Programming Languages 1, 1(1993), 71-91.
....1 Background Language processing tools have employed various combinations of forward and backward data flow dependencies for a variety of purposes viz. Partial Redundancy Elimination (PRE) 5, 9, 22, 44, 47, 54] and related optimizations [6, 16, 39, 53] Code Hoisting and Strength Reduction [15, 17, 21, 26, 29, 30, 36]. Live Range Characterisation and Register Assignment [14, 41] Dead Code Elimination [4, 38] Communication Placement [25, 27] Shrink Wrapping of Procedure Calls [8] Redundant Array Bound Checks Elimination [40] Compilation for Distributed Memory [1] Data flow analysis for ....
J. Knoop, O. Ruthing, and B. Steffen. Lazy strength reduction. Journal of Programming Languages, 1(1):71--91, 1993.
....of questionable utility, since the register 7 allocation phase of the compiler can completely eliminate the apparent cost of these unnecessary assignments. Joshi and Dhamdhere [1] proposed incorporating strength reduction into the suppression of partial redundancies. Knoop, Ruthing, and Steffen [3] showed how to implement this in their version of the algorithm (actually, in their earlier variant [2] including the refinements necessary to combine multiple additions and prevent addition and multiplication from being done on the same path. ....
Jens Knoop, Oliver Ruthing, and Bernhard Steffen. Lazy strength reduction. Journal of Programming Languages, 1(1):71--91, 1993.
....are code hoisting, register shrink wrapping [Chow 1988] and live range shrinking. PRE has traditionally provided the context for integrating additional optimizations into its framework; one such optimization is operator strength reduction [Joshi and Dhamdhere 1982; Chow 1983; Dhamdhere 1989; Knoop et al. 1993; Dhaneshwar and Dhamdhere 1995] In [Kennedy et al. 1998] we present techniques that allow strength reduction and linear function test replacement to be performed in the SSAPRE framework. In [Lo et al. 1998] we present techniques to incorporate speculative code motion in the SSAPRE framework, ....
Knoop, J., R uthing, O., and Steffen, B. 1993. Lazy strength reduction. Journal of Programming Languages 1, 1 (Mar.), 71--91.
.... reduction as a loop optimization problem that requires explicit detection of induction variables, and implements the technique as a stand alone algorithm [CK77, ACK81, CP91, CSV95] The second family effects strength reduction by data flow analysis in the context of partial redundancy elimination [JD82, Cho83, Dha89, KRS93]. The method described in this paper falls in the second family. Partial redundancy elimination (PRE) is a powerful optimization technique first developed by Morel and Renvoise [MR79] The technique removes partial redundancies in the program through data flow analysis. Since global common ....
....et al. give an alternative PRE algorithm called lazy code motion that improves on Morel 2 and Renvoise s results by avoiding unnecessary code movements, and by removing the bidirectional nature of the original PRE data flow equations. They also presented the lazy strength reduction algorithm [KRS93] that combines strength reduction with lazy code motion. A new algorithm to perform PRE, called SSAPRE, was recently developed by our team at Silicon Graphics [CCK 97] The development of this new algorithm was motivated by the fact that traditional data flow analysis based on bit vectors does ....
[Article contains additional citation context not shown here]
Knoop, J., Ruthing, O. and Steffen, B., Lazy Strength Reduction. Journal of Programming Languages (1993) 1, pp. 71-91.
....elimination of load and store redundancies [Cho88, KRS94b] We intend to pursue such work in the near future. The SSAPRE approach can also incorporate techniques developed in the context of classical PRE, such as the integration of strength reduction into the PRE optimization phase [Cho83, Dha89, KRS93] We currently have a working prototype of SSAPRE that includes strength reduction and linear function test replacement. Processing expressions one at a time also allows other possibilities for SSAPRE by customizing the handling of different types of expressions. For example, one might suppress ....
J. Knoop, O. Ruthing, and B. Steffen. Lazy strength reduction. Journal of Programming Languages, 1(1):71--91, March 1993.
....[21, 35] It is easy to see that methods in this class have the potential to be most general and powerful. Our work falls into the third category. The principles of our approach are essentially the same as those underlying the work by Allen, Cocke, Kennedy, and others on strength reduction [4, 17, 34, 16, 5, 59, 42], by Earley on high level iterators [22] by Fong and Ullman 3 on inductive variables [28, 26, 27] by Paige, Schwartz, and Koenig on finite differencing [57, 61, 58] by Dijkstra, Gries, and Reynolds [21, 35, 74, 36] on maintaining and strengthening loop invariants, by Boyle, Moore, Manna, and ....
J. Knoop, O. Ruthing, and B. Steffen. Lazy strength reduction. Journal of Programming Languages, 1(1):71--91, 1993.
....expressions producing values known at compile time. Conceptually, constant expressions are redundant because there is a compile time expression from which the value flows to the (redundant) constant expression executed at run time. Strength Reduction is another value flow optimization [DI80, KRS93] Rather than reusing the flowing value directly, it is used to find a cheaper way to compute the result of the expression. Partial Dead Code Elimination [KRS94b] eliminates statements that compute a value that will not be used in the remainder of the program. While all these optimizations share ....
....in [KRS94b] maximizes optimization that is possible with code motion alone. Dead values that cannot be removed with code motion must be eliminated through restructuring, as shown in [BG97] Strength reduction (an extension of PRE) has so far been presented as code motion optimization [DI80, KRS93] Probably, applying restructuring and speculation would enhance the motion only strength reduction. Clearly, the four transformations differ in their power and cost [BGS98] Deletion is only applicable on fully redundant operations, hence not suitable for path sensitive optimizations. While ....
Jens Knoop, O. Ruthing, and Bernhard Steffen. Lazy strength reduction. International Journal of Programming Languages, 1:71--91, 1993.
....to perform the actual reduction and instruction replacement. Linear function test replacement is a separate pass for each loop. Chase extended the Allen, Cocke, and Kennedy method to reduce more additions [9] A second family of techniques has grown up around the literature of data flow analysis [13, 17, 14, 20]. These methods use the careful code placement calculations developed for code motion to perform strength reduction. These methods avoid the control flow analysis used in the Allen, Cocke, and Kennedy methods; our algorithm uses properties of SSA for the same purpose. Their placement techniques ....
Jens Knoop, Oliver Ruthing, and Bernhard Steffen. Lazy strength reduction. Journal of Programming Languages, 1(1):71--91, 1993.
....with the PDE optimization in order to aggressively optimize frequently executed paths through a program. The approach for cost benefit analysis that we have presented is quite general and has also been applied to other problems including partial redundancy elimination [9] strength reduction [18], and load store elimination from loops [3, 8] The example in Figure 11 illustrates the application of our approach to partial redundancy elimination. In the first flow graph shown in Figure 11a, the evaluation of the expression x y in node 7 is partially redundant. Along paths that visit node ....
J. Knoop, O. Ruthing, and B. Steffen, "Lazy Strength Reduction," Journal of Programming Languages, 1(1):71-91, 1993.
....1 lists the optimizations performed by cmcc. These optimizations are based mostly on the standard bit vector algorithms described in [12] Our implementations of partial redundancy elimination, strength reduction and partial dead code elimination are based on the algorithms described in [21] [20] and [22] The global register allocator is a Chaitin style register allocator [9] with the improvements described in [7] So far, we have retargeted cmcc to the MIPS, SPARC, DLX, and iWarp architectures. We used the MIPS code generator to gather the results that we report in this paper. In this ....
J. Knoop, O. Ruthing, and B. Steffen. Lazy strength reduction. Journal of Prog. Languages, 1(1):71--91, 1993.
....to perform the actual reduction and instruction replacement. Linear function test replacement is a separate pass for each loop. Chase extended the Allen, Cocke, and Kennedy method to reduce more additions [12] A second family of techniques has grown up around the literature of data flow analysis [19, 26, 20, 30]. These methods use the careful code placement calculations developed for code motion to perform strength reduction. These methods avoid the control flow analysis used in the Allen, Cocke, and Kennedy methods; our algorithm uses properties of SSA for the same purpose. Their placement techniques ....
Jens Knoop, Oliver Ruthing, and Bernhard Steffen. Lazy strength reduction. Journal of Programming Languages, 1(1):71--91, 1993. 139
.... liveness, availability, very business, reaching definitions, definition use chains (cf. He] partially redundant expression elimination (cf. DRZ, KRS1, MR] partial dead code elimination (cf. KRS3] partially redundant assignment elimination (cf. KRS4] or strength reduction (cf. Dh, JD, KRS2] can be adapted for parallel programs at almost no cost on the runtime and the implementation side. The next section will recall the sequential situation, while Section 3 develops the corresponding notions for parallel programs. Subsequently, Section 4 sketches some applications of our algorithm ....
Knoop, J., Ruthing, O., and Steffen, B. Lazy strength reduction. Journal of Programming Languages 1 , 1 (1993), 71 - 91.
....motion procedures into uni directional components. Besides yielding clarity and reducing the number of predicates drastically, this allows us to utilize the efficient algorithms for uni directional bit vector analyses. Moreover, it makes the algorithm modular, which supports future extensions: in [KRS] we present an extension of our lazy code motion algorithm which, in a similar fashion as in [JD1, JD2] uniformly combines code motion and strength reduction, and following the lines of [KS1, KS2] a generalization to programs with procedures, local variables and formal parameters is ....
Knoop, J., Ruthing, O., and Steffen, B. Lazy strength reduction. To appear.
.... = Nil,nNil f(57 cond) Nil,nNil 67 68 69 68 sendsTo : Main new 68 sendsTo mainMethod Main class B Dead Code f1(x,y,27 sendsTo) A , C , A ) f2(x,y,27 sendsTo) C , B , C ) Figure 9: Illustrating the Power of the new Type Analysis 20 tion (cf. KRS4] or strength reduction (cf. [KRS5]) can now be made available for OO programs. Moreover, due to the genericity of the algorithm of our framework, transferring these techniques does not require to construct and implement for each required analysis a new algorithm. This supports rapid prototyping and unburdens the compiler writer ....
Knoop, J., Ruthing, O., and Steffen, B. Lazy strength reduction. Journal of Programming Languages 1 , 1 (1993), 71 - 91.
....analyses, and works on flowgraphs whose nodes are basic blocks rather than single statements. As the original algorithm it yields optimal results and is as efficient as the well known algorithms for unidirectional bit vector analysis. The modularity of our algorithm supports further extensions: in [23] we present an extension of our lazy code motion algorithm which, in a similar fashion as in [7, 18, 19] uniformly combines code motion and strength reduction, and following the lines of [24,25] a generalization to programs with procedures, global and local variables and formal value parameters ....
Knoop, J., R uthing, O., and Steffen, B. Lazy strength reduction. Journal of Programming Languages 1, 1 (1993), 71--91.
....routine (cf. Section 3. 4) Thus all the well known algorithms for liveness, availability, very business, reaching definitions, definition use chains (cf. He] partial redundancy elimination (cf. DS, DRZ, KRS1, KRS2, MR] partial dead code elimination (cf. KRS2] or strength reduction (cf. [Dh, JD1, JD2, KRS3]) can be adapted for parallel programs at almost no cost on the runtime and the implementation side. The next section will recall the sequential situation, while Section 3 develops the corresponding notions for parallel programs. Subsequently, Section 4 sketches some applications of our algorithm ....
.... term has been computed on every program execution reaching a particular program point to more sophisticated applications like definition use chains (cf. He] partial redundancy elimination (cf. DS, DRZ, KRS1, KRS2, MR] partial dead code elimination (cf. KRS2] or strength reduction (cf. [Dh, JD1, JD2, KRS3]) Below we present the local semantic functionals of four bitvector problems in order to give a flavour of how a typical bitvector analysis looks like. Moreover, these analyses are all practically relevant, since they are the central components of two algorithms that eliminate all partially ....
Knoop, J., Ruthing, O., and Steffen, B. Lazy strength reduction. Journal of Programming Languages 1 , 1 (1993), 71 - 91.
....chains (cf. He] can easily be adapted for parallel programs at almost no cost on the runtime and the implementation side. This is practically important as there is a broad variety of powerful classical program optimizations including code motion (cf. KRS1, KRS2] strength reduction (cf. [KRS3]) partial dead code elimination (cf. KRS4] and assignment motion (cf. KRS5] which are solely based on bitvector analyses. All these optimizations are now available for parallel programs. For the full version of this paper see [KSV2] y Fakultat fur Mathematik und Informatik, Universitat ....
Knoop, J., Ruthing, O., and Steffen, B. Lazy strength reduction. Journal of Programming Languages 1 , 1 (1993), 71 - 91.
....analyses, and works on flowgraphs whose nodes are basic blocks rather than single statements. As the original algorithm it yields optimal results and is as efficient as the well known algorithms for unidirectional bit vector analysis. The modularity of our algorithm supports further extensions: in [23] we present an extension of our lazy code motion algorithm which, in a similar fashion as in [7, 18, 19] uniformly combines code motion and strength reduction, and following the lines of [24, 25] a generalization to programs with procedures, global and local variables and formal value parameters ....
Knoop, J., R uthing, O., and Steffen, B. Lazy strength reduction. Journal of Programming Languages 1, 1 (1993), 71--91.
.... are most relevant in practice due to their broad scope of applications ranging from simple analyses like live variables or available terms to sophisticated and powerful program optimizations like code motion [44] assignment motion [45] partial dead code elimination [46] to strength reduction [47] and (via definition use chains) to constant propagation and constant folding [43] Proving Preciseness of an Interprocedural DFA Algorithm Prove: 1) the function lattice [ C C ] satisfies the descending chain condition 2) the local semantic functions [ n ] 0 , n 2 N 0 , are distributive ....
....by computations at nodes 4, 15, 18 and 30, at node 1, at node 3 and 25, at node 12, and at node 22, respectively. The very busy earliest transformation can be refined to additionally minimize the lifetimes of introduced temporaries or to capture strength reduction in the fashion of [44, 48] and [47], respectively. Furthermore, following the lines of [46] and [45] it can be extended to realize partial dead code elimination and partially redundant assignment elimination. 22 Jens Knoop et al. v : u v f : c u u : x b f : d e x : a b p ; VAR a,b,c,d,e,f 0 p call (a,b,e) 1 e : c d b : ....
J. Knoop, O. Ruthing, and B. Steffen. Lazy strength reduction. Journal of Programming Languages, 1(1):71--91, 1993.
....procedures into uni directional components. Besides yielding clarity and reducing the number of predicates drastically, this allows us to utilize the efficient algorithms for uni directional bit vector analyses. Moreover, it makes the algorithm modular, which supports future extensions: in [KRS2] we present an extension of our lazy code motion algorithm which, in a similar fashion as in [JD1, JD2] uniformly combines code motion and strength reduction, and following the lines of [KS1, KS2] a generalization to programs with procedures, local variables and formal parameters is ....
Knoop, J., Ruthing, O., and Steffen, B. Lazy strength reduction. To appear.
No context found.
J. Knoop, O. Ruthing, and B. Steffen. Lazy strength reduction. J. of Prog. Languages, 1(1):71--91, 1993.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC