| B. Dwyer, "Simple Algorithms for Traversing a Tree without a Stack," Information Processing Letters, 2(5), pp. 143--145, 1973. |
....load of the d[k] array element followed by a store to the same element, where the store does not use the value that was loaded. We have found comparable code segments containing such a load followed by a store in other diverse applications, such as Gauss Jordan elimination [9] and tree traversals [5]. sv = d[k] 2.0 d[k 1] dd[k] d[k] Fig. 2. Code Segment in Polynomial Approximation from Chebyshev Coefficients A more common operation where a swap instruction can be exploited is when the values of two variables are exchanged. Consider Fig. 3(a) which depicts the exchange ....
....with a symbolic address early in the compilation process and tracked the movement of memory references through a variety of code improving transformations. 7 M[v] r[b] r[a] M[v] r[b] r[a] a) Same Addresses after Expanding the Expressions r[2] r[3] 2; r[2] r[2] a; r[5] = M[r[2] r[4] r[3] 2; r[4] r[4] a; M[r[4] r[6] b) Load and Store to the Same Variable with M[v] r[b] M[r[c] r[d] r[a] M[v] an Intervening Store (c) A Store That Is Dependent on a Load Fig. 10. Detecting If Memory Addresses Are the Same, ....
B. Dwyer, "Simple Algorithms for Traversing a Tree without a Stack," Information Processing Letters, 2(5), pp. 143--145, 1973.
....a load of the d[k] array element followed by a store to the same element, where the store does not use the value that was loaded. Comparable code segments containing such a load followed by a store were found in other diverse applications, such as Gauss Jordan elimination [10] and tree traversals [5]. A more common operation where a swap instruction can be exploited is when the values of two variables are exchanged. Consider Fig. 3.2(a) which depicts the exchange of the values in x and y at the source code level. Fig. 3.2(b) indicates that the load and store of x can be coalesced together. ....
....and loop invariant code motion may move the assignments of addresses to registers far from where they are actually dereferenced. b) Load and Store to the Same (a) Same Addresses after Expanding the Expressions Variable with an Intervening Store r[2] r[3] 2; r[2] r[2] a; r[5] = M[r[2] r[4] r[3] 2; r[4] r[4] a; M[r[4] r[6] M[v] r[b] M[r[c] r[d] r[a] M[v] Figure 4.4. Examples of Detecting If Memory Addresses Are the Same or Differ We implemented some techniques to determine if the addresses of two memory references were ....
B. Dwyer, "Simple Algorithms for Traversing a Tree without a Stack," Information Processing Letters, 2(5), pp. 143--145 (1973).
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