| 6175957 |
Method of, system for, and computer program product for providing efficient utilization of memory hierarchy through code restructuring |
| Jan-16-2001 |
Code restructuring or reordering based on profiling information and memory hierarchy is provided by constructing a Program Execution Graph (PEG) corresponding to a level of the memory hierarchy, partitioning... |
| 6128775 |
Method, system, and computer program product for performing register promotion via load and store placement optimization within an optimizing compiler |
| Oct-3-2000 |
A method, system, and computer program product for performing register promotion, that optimizes placement of load and store operations of a computer program within a compiler. Based on the observation... |
| 6064819 |
Control flow and memory management optimization |
| May-16-2000 |
Selected code is modeled in a polyhedral dependency graph (PDG). A placement optimizer maps each element of the PDG to an optimally placed PDG. An ordering optimizer maps the placed PDG to an optimally... |
| 6058266 |
Method of, system for, and computer program product for performing weighted loop fusion by an optimizing compiler |
| May-2-2000 |
An integer programming formulation for weighted loop fusion is presented. Loop fusion is a well-known program transformation that has shown to be effective in reducing loop overhead and improving register... |
| 6045585 |
Method and system for determining inter-compilation unit alias information |
| Apr-4-2000 |
A system and method for determining alias information at the inter-compilation unit level of a compilation process includes the steps of determining anti-alias sets from the alias information provided... |
| 6044222 |
System, method, and program product for loop instruction scheduling hardware lookahead |
| Mar-28-2000 |
Improved scheduling of instructions within a loop for execution by a computer system having hardware lookahead is provided. A dependence graph is constructed which contains all the nodes of a dependence... |
| 6035124 |
Method of, system for, and computer program product for providing extended global value numbering |
| Mar-7-2000 |
A fast and efficient way of performing extended global value numbering beyond basic blocks and extended basic blocks on a complete topological ordering of basic blocks in a program. Global value numbering... |
| 6035123 |
Determining hardware complexity of software operations |
| Mar-7-2000 |
A new class of general purpose computers called Programmable Reduced Instruction Set Computers (PRISC) use RISC techniques a basis for operation. In addition to the conventional RISC instructions, PRISC... |
| 6014513 |
Discovering code and data in a binary executable program |
| Jan-11-2000 |
A computer software tool used for automatically identifying code portions and data portions of a binary executable software program in which the code portions include machine instructions that are of arbitrary... |
| 5999739 |
Method and apparatus for elimination of redundant branch instructions from a program |
| Dec-7-1999 |
The procedure of the invention eliminates redundant conditional branch statements (CBSs) from a program, wherein the program includes (i) plural blocks of program statements, (ii) a definition statement... |
| 5999738 |
Flexible scheduling of non-speculative instructions |
| Dec-7-1999 |
A technique for flexible scheduling of a code sequence wherein a set of instructions for determining a a fully-resolved predicate for each of a set of non-speculative instructions contained in the code... |
| 5978588 |
Method and apparatus for profile-based code placement using a minimum cut set of the control flow graph |
| Nov-2-1999 |
A method and apparatus placing blocks of object code by a compiler. The code placement is done optimally, using a "cut set technique" that uses the "max-flow/min-cut" principle. A preferred embodiment... |
| 5978586 |
Method for tracking changes in source locations in a compiler |
| Nov-2-1999 |
The disclosed method creates a source object for each source language element parsed by the compiler and associates each such created source object with objects created from source language elements to... |
| 5966534 |
Method for compiling high level programming languages into an integrated processor with reconfigurable logic |
| Oct-12-1999 |
A method is presented for automatically compiling a high level computer program down into an application specific integrated circuit coupled with a generic microprocessor. The original source code is written... |
| 5946492 |
Compiler that reduces call stack size through identification of stackless variables |
| Aug-31-1999 |
The present invention uses an optimizing compiler to identify what are referred to herein as stackless variables. A variable is said to be stackless for a given call statement if the calling program does... |
| 5940621 |
Language independent optimal size-based storage allocation |
| Aug-17-1999 |
Compiler performance is improved without compromising program correctness by altering the commonly expected ordering that has been used in the past. A more efficient memory image is provided which results... |
| 5940619 |
Dynamic fine-grained dependency analysis for a functional language |
| Aug-17-1999 |
In a computerized method, a computer program is analyzed while the program is interpreted. The program is expressed in a first memory as input values and functions. Some of the input values are complex... |
| 5937195 |
Global control flow treatment of predicated code |
| Aug-10-1999 |
The relationships among predicates are tracked globally by uniformly treating both control flow and explicit predicates by mapping them to a single connected partition graph. This allows for the analysis... |
| 5933644 |
Method and apparatus for conflict-based block reordering |
| Aug-3-1999 |
A method and apparatus for ordering blocks of code by a compiler. The compiler generates a conflict graph in accordance with the blocks of a computer program being compiled. Once the conflict graph is... |
| 5926639 |
Embedded flow information for binary manipulation |
| Jul-20-1999 |
A method and apparatus for making flow information available for binary manipulation tasks are disclosed. Flow information is generated and saved either by a compiler or by a flow information generator.... |
| 5923883 |
Optimization apparatus which removes transfer instructions by a global analysis of equivalence relations |
| Jul-13-1999 |
The basic block division unit 2 divides the instruction sequence into basic blocks which are sequences with a continuous execution order. The control flow analysis unit 3 analyzes the control flow between... |
| 5901317 |
Method and system for register allocation using multiple interference graphs |
| May-4-1999 |
Allocation of real registers to virtual or symbolic registers represented by nodes in an interference graph is performed with a compiler using a primary interference graph and a secondary interference... |
| 5894576 |
Method and apparatus for instruction scheduling to reduce negative effects of compensation code |
| Apr-13-1999 |
A method is described for scheduling an instruction of a computer program. The instruction is scheduled into an active block of the computer program if no compensation copy is necessary, or if any necessary... |
| 5887174 |
System, method, and program product for instruction scheduling in the presence of hardware lookahead accomplished by the rescheduling of idle slots |
| Mar-23-1999 |
Instructions are scheduled for execution by a processor having a lookahead buffer by identifying an idle slot in a first instruction schedule of a first basic block of instructions, and by rescheduling... |
| 5867711 |
Method and apparatus for time-reversed instruction scheduling with modulo constraints in an optimizing compiler |
| Feb-2-1999 |
Apparatus and methods are disclosed for performing time-reversed scheduling of a data dependency graph representing a target program instruction loop in an optimizing compiler. The instruction scheduling... |
| 5864700 |
Sequencing and error detection of template instantiations during compilation of C++ Programs |
| Jan-26-1999 |
A priority queue is used to sequence template instantiations in compiling C++ programs. If the analysis of a C++ code fragment encounters a name that requires full instantiation and no matching full instantiation... |
| 5862385 |
Compile method for reducing cache conflict |
| Jan-19-1999 |
A compiling method, for use with programs to be executed on a computer with cache memory, which programs would otherwise generate decreased performance due to cache conflicts arising from conflicting cache... |
| 5854929 |
Method of generating code for programmable processors, code generator and application thereof |
| Dec-29-1998 |
The present invention concerns a method of generating code for a programmable processor and comprises several steps. The first step is representing the processor as a directed bipartite graph with first... |
| 5854926 |
Method and apparatus for identifying flip-flops in HDL descriptions of circuits without specific templates |
| Dec-29-1998 |
A method and apparatus is disclosed for detecting edge-sensitive behavior from HDL descriptions of a circuit and inferring a hardware implementation of that behavior as a generalized edge-triggered D-type... |
| 5852734 |
Method and compiler for parallel execution of a program |
| Dec-22-1998 |
To increase the speed of program execution by decomposing a loop onto a plurality of processors and executing them in parallel. First, a loop in a source program is located which is to be executed in parallel.... |
| 5850552 |
Optimization apparatus for removing hazards by arranging instruction order |
| Dec-15-1998 |
An optimization apparatus is provided for removing hazards from a program by rearranging instructions for each program segment. The apparatus comprises: a Directed Acyclic Graph (DAG) generating means... |
| 5850549 |
Global variable coalescing |
| Dec-15-1998 |
An interprocedural compilation method for aggregating global data variables in external storage to maximize data locality. Using the information displayed in a weighted interference graph in which node... |
| 5838977 |
Translating an object graph at run time |
| Nov-17-1998 |
The dbX persistent programming language model solves the problem of seamlessly providing an unfragmented, persistible, complex object heap space that extends beyond virtual memory to a program in a host... |
| 5836014 |
Method of constructing a constant-folding mechanism in a multilanguage optimizing compiler |
| Nov-10-1998 |
A compiler framework comprises a generic compiler back end which may be used by a plurality of front ends to generate object code for a target computer system. Each front end scans and parses a source... |
| 5822593 |
High-level loop fusion |
| Oct-13-1998 |
A processor is provided with a software program specifying an overall computation that includes operations. Each operation implies a set of subcomputations, without explicitly specifying a control structure... |
| 5809308 |
Method and apparatus for efficient determination of an RMII vector for modulo scheduled loops in an optimizing compiler |
| Sep-15-1998 |
Apparatus and methods are disclosed for determining a recurrence minimum iteration interval (rmii) vector for use in modulo scheduling target program instructions during the code optimization pass of an... |
| 5802375 |
Outer loop vectorization |
| Sep-1-1998 |
A system and method for vectorizing a non-innermost loop of a nested loop. Iterative loops of a nested loop are analyzed to determine if they can be vectorized (vector legality). If more than one iterative... |
| 5790866 |
Method of analyzing definitions and uses in programs with pointers and aggregates in an optimizing compiler |
| Aug-4-1998 |
A method for analyzing and optimizing programs that contain pointers and/or aggregates, such as found in the languages C, C++, FORTRAN-90, and Ada. The method applies to storage locations (lvalues) and... |
| 5790863 |
Method and system for generating and displaying a computer program |
| Aug-4-1998 |
A method and system for generating a computer program. In a preferred embodiment, the present invention provides a program tree editor for directly manipulating a program tree. A program tree comprises... |
| 5787287 |
Representation of control flow and data dependence for machine |
| Jul-28-1998 |
A method of representing data dependence and control flow between two instructions in computer-executable instructions. Each instruction is for reading or writing a variable. The sequence of instructions... |
| 5778232 |
Automatic compiler restructuring of COBOL programs into a proc per paragraph model |
| Jul-7-1998 |
A compiler for compiling and optimizing a COBOL program. The invention is embodied in a front end that reads the COBOL program and generates an intermediate representation that can be optimized by later... |
| 5768595 |
System and method for recompiling computer programs for enhanced optimization |
| Jun-16-1998 |
An optimizing compiler for producing executable programs from code, high level languages compiles the code whilst generating data from which a callgraph may be constructed, and then recompiles the procedures... |
| 5761514 |
Register allocation method and apparatus for truncating runaway lifetimes of program variables in a computer system |
| Jun-2-1998 |
A method and apparatus for truncating runaway lifetimes of program variables calculates liveness for each variable based on upwardly exposed uses. Reaching definitions are then calculated for at least... |
| 5758164 |
Method and system for processing language |
| May-26-1998 |
In a language processing system for translating a source program into a machine program, a range of the source program to be optimized is discriminated during parsing to generate an optimization enabling... |
| 5671419 |
Interprocedural data-flow analysis that supports recursion while only performing one flow-sensitive analysis of each procedure |
| Sep-23-1997 |
A computer implemented method performs flow-sensitive interprocedural data flow analysis without iteration for a class of interprocedural problems. The accuracy of the solution can approach the iterative... |
| 5659754 |
Method and apparatus for an improved optimizing compiler |
| Aug-19-1997 |
An optimizing compiler process and apparatus is disclosed for more accurately and efficiently identifying live variable sets in a portion of a target computer program, so as to more efficiently allocate... |
| 5652889 |
Alternate execution and interpretation of computer program having code at unknown locations due to transfer instructions having computed destination addresses |
| Jul-29-1997 |
It is not always possible or practical to fully translate an original computer program because execution transfer instructions may have computed destination addresses that cannot be determined until program... |
| 5649203 |
Translating, executing, and re-translating a computer program for finding and translating program code at unknown program addresses |
| Jul-15-1997 |
A program is translated by automatically generating a flowgraph, using the flowgraph to analyze the program to provide information about blocks of instructions in the flowgraph, and then using the flowgraph... |
| 5606698 |
Method for deriving optimal code schedule sequences from synchronous dataflow graphs |
| Feb-25-1997 |
A method is disclosed for deriving code schedule sequences for a target code generator from an input ordering of nodes and prime factors of their respective ordered invocation rates from an SDF graph representative... |
| 5598560 |
Tracking condition codes in translation code for different machine architectures |
| Jan-28-1997 |
A code translator, constructed similar to a compiler, accepts as an input to be translated the assembly code written for one architecture (e.g., VAX), and produces as an output object code for a different... |