Compiler optimization technology

Our business is providing customized versions of our VAST high-level optimization product (parallelizing, vectorizing, and/or optimizing compiler components) to developers of compiler systems targeting high-speed architectures, whether embedded processors, reconfigurable systems or supercomputers.

How does VAST interface with the Compiler?

VAST operates on compiler intermediate representations of the program (such as LLVM or Edison Design Group IR) to perform high-level optimizations, including loop nest optimizations and automatic vectorization and parallelization. For example in a compiler system that uses LLVM, VAST can be supplied as a "plug-in" shared-object library. VAST takes in LLVM IR and puts out modified LLVM IR, depending on the requirements and characteristics of the target compiler and architecture. Simiarly, for a system that uses the EDG front end, VAST runs as a high-level optimization pass after the front end has parsed the program and before the back end generates code for the particular target system; VAST operates on the input EDG IR and generates restructured EDG IR.

What if I don't use LLVM or EDG?

For compilers using other intermediate representations, VAST can be customized to take in that IR and regenerate its transformations in that IR. VAST is generally customized to fit in with the specific programming methodology, programming tools, and architectural details of the target system.

What can VAST do?

VAST can restructure loops, add calls to performance intrinsics, bring external functions inline, and signal to the compiler backend via metadata. VAST features a large variety of loop optimizations, and has very extensive data dependency analysis, which it uses in its vectorization and parallelization of the code. It can also pass this information on to the rest of the compiler in a variety of ways, ranging from indicating loops that have no array or pointer dependencies to explicitly adding data dependence arcs for all dependencies in a loop nest. (See the menu for a list of VAST's features.)
Target Systems

What types of systems can VAST target?

The VAST technology supports many types of architectures, including parallel, vector, SIMD, superscalar, and others.
Technology menu

VAST Optimization List

We provide a very wide array of possible optimizations, transformations and information, both in off-the-shelf modules and in customized forms. See the menu for a list of VAST's features.
Examples

Example Transformations

Here are some code examples that show a few of the transformations VAST can add to a compilation system.
Doing business

How can we license VAST?

We have a "standard" business model, but we've had to deal with so many different kinds of customers and products that in practice we're pretty flexible. We always work closely with our customers to customize and support the products to make sure we get peak performance from the target compiler and architecture. Testing and support are very high priorities for us.
Contact us

How do we proceed?

Don't hesitate to email or call us to discuss possibilities, even if you're unclear about what we have to offer and/or what you need. We're easy to talk to.
Home Contact Legal

Copyright 2003, 2016 Crescent Bay Software Corp.