Results 1 -
7 of
7
An Approach for Exploring Code Improving Transformations
, 1997
"... : Although code transformations are routinely applied to improve the performance of programs for both scalar and parallel machines, the properties of code improving transformations are not well understood. In this paper we present a framework that enables the exploration, both analytically and expe ..."
Abstract
-
Cited by 65 (4 self)
- Add to MetaCart
: Although code transformations are routinely applied to improve the performance of programs for both scalar and parallel machines, the properties of code improving transformations are not well understood. In this paper we present a framework that enables the exploration, both analytically and experimentally, of properties of code improving transformations. The major component of the framework is a specification language, Gospel, for expressing the conditions needed to safely apply a transformation and the actions required to change the code to implement the transformation. The framework includes a technique that facilitates an analytical investigation of code improving transformations using the Gospel specifications. It also contains a tool, Genesis, that automatically produces a transformer that implements the transformations specified in Gospel. We demonstrate the usefulness of the framework by exploring the enabling and disabling properties of transformations. We first present ana...
Integrating Code Generation and Optimization
, 1986
"... This paper describes a compiler with a code generator and machine-directed peephole optimiser that are tightly integrated. Both functions are per-formed by a single rule-based rewriting system that matches and replaces patterns. This organization helps make the compiler simple, fast, and retar-getab ..."
Abstract
-
Cited by 15 (0 self)
- Add to MetaCart
This paper describes a compiler with a code generator and machine-directed peephole optimiser that are tightly integrated. Both functions are per-formed by a single rule-based rewriting system that matches and replaces patterns. This organization helps make the compiler simple, fast, and retar-getable. It alao corrects certain phase-ordering problems.
Semantics-Directed Code Generation
, 1985
"... The intermediate representations (IR) used by most compilers have an operational semantics. The nodes in the graph (or tree, or quad-code sequence) have an interpretation as the operation codes of some abstract machine. A denotational semantics, in which each node in the IR graph has a static meanin ..."
Abstract
-
Cited by 7 (2 self)
- Add to MetaCart
The intermediate representations (IR) used by most compilers have an operational semantics. The nodes in the graph (or tree, or quad-code sequence) have an interpretation as the operation codes of some abstract machine. A denotational semantics, in which each node in the IR graph has a static meaning, can lead to a clean interface between the front and back ends of the compiler. Furthermore, it is possible to concisely specify a code generator to translate the denotational representation into machine code. Combined with recent work allowing the denotational specification of front ends to translate the input language into the IR, a complete compiler with a well-defined semantics may be generated. Using this technique, compilers have been written for (most of) Pascal and C which, although they compile slowly, produce fairly good machine code. July 25, - 1 - 1 1. Introduction The intermediate representations (IR) used by most compilers have an operational semantics. The nodes in the gra...
The Design and Implementation of Genesis
, 1994
"... This paper describes the design and implementation of Genesis and demonstrates how such a generator could be used by optimizer designers. Some experiences with the generator are also described ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
This paper describes the design and implementation of Genesis and demonstrates how such a generator could be used by optimizer designers. Some experiences with the generator are also described
Formal Verification of Transformations for Peephole Optimization
- In FME '97: Formal Methods: Their Industrial Application and Strengthened Foundations, Lecture Notes in Computer Science
, 1997
"... . In this paper we describe a formal verification of transformations for peephole optimization using the PVS system [12]. Our basic approach is to develop a generic scheme to mechanize these kinds of verifications for a large class of machine architectures. This generic scheme is instantiated wi ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
. In this paper we describe a formal verification of transformations for peephole optimization using the PVS system [12]. Our basic approach is to develop a generic scheme to mechanize these kinds of verifications for a large class of machine architectures. This generic scheme is instantiated with a formalization of a non-trivial stack machine [14] and a PDP-11 like two-address machine [2], and we prove the correctness of more than 100 published peephole optimization rules for these machines. In the course of verifying these transformations we found several errors in published peephole transformation steps [14]. From the information of failed proof attempts, however, we were able to discover strengthened preconditions for correcting the erroneous transformations. Keywords: formal verification, transformations, higher-order logic, reusability of specifications. 1 Introduction Peephole optimization is generally understood as the replacement of a sequence of instructions by ...
Near-Optimal Instruction Selection on DAGs
, 2008
"... Instruction selection is a key component of code generation. High quality instruction selection is of particular importance in the embedded space where complex instruction sets are common and code size is a prime concern. Although instruction selection on tree expressions is a well understood and ea ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
Instruction selection is a key component of code generation. High quality instruction selection is of particular importance in the embedded space where complex instruction sets are common and code size is a prime concern. Although instruction selection on tree expressions is a well understood and easily solved problem, instruction selection on directed acyclic graphs is NP-complete. In this paper we present NOLTIS, a near-optimal, linear time instruction selection algorithm for DAG expressions. NOLTIS is easy to implement, fast, and effective with a demonstrated average code size improvement of 5.1 % compared to the traditional tree decomposition and tiling approach.

