This is the code for the Omega Test. The interface for sage consists
in the file sagedriver.c and the include file lang-interf.h.
This is a preliminary interface, It does not use yet all the capabilities
of the omega test. More should follow.
Foloowing the original README for the tiny/omega test distribution.
********************************************************************
README file for omega/tiny distribution
README,v 1.1 1993/09/17 22:13:45 fbodin Exp
********************************************************************
This is the readme file for version 3.0.0 of the distribution of the Omega
test, which is available via anonymous ftp from ftp.cs.umd.edu (128.8.128.8)
in the directory pub/omega.
This release consists of three components:
* The Omega test: A system for performing symbolic
manipulations of conjunctions of linear constraints
over integer variables. In particular, the operations
supported include:
* Checking if integer solutions exist
* Eliminating an existential quantifier. For example,
we can transform
{ Exists b s.t. 0 <= a <= 5; b < a <= 5b}
to
{ 2 <= a <= 5}
* Checking to see if one set of constraints implies
another. For example, we can check to see if:
{0 <= x <= 3; -3 <= 2y <= 3} => {0 <= x+y, x-y <= 3}
The interface to the Omega test is described
in the file doc/omega_interface.tex
* The Omega test dependence analyzer: A system built on top
of the Omega test to analyze array data dependences. This
system builds the appropriate problems and makes the appropriate
queries of the Omega test to analyze array-based data dependences
in programs. The analyzer computes data difference/direction
vectors, recognizes reduction dependences, analyzes array kills
(which enables array expansion and array privatization),
and determines when assertions can be used to eliminate dependences.
We have attempted to define an interface that allows other users
to make use of the Omega test dependence analyzer. This interface
is described in include/lang-interf.generic and Lang-Interf3.0
(keep in touch if you plan to use this interface; we are continuing
to refine it).
* Extended tiny. We have extended Michael Wolfe's tiny tool. The
major extensions are:
* Improved user interface (scrolling, dependence browsing
windows)
* Capabilities that improve the accuracy of data dependence
analysis (induction variable recognition, forward
substitution).
* Features that demonstrate the additional information we
collect (scalar/array expansion and privatization,
interactive dependence zapping)
* An semi-automatic procedure for converting FORTRAN programs
into tiny
* A prototype implementation of a unified framework
for reordering transformations. The framework
unifies loop interchange, skewing, distribution,
fusion, reversal, statement reordering, and some
cases of access normalization, loop alignment, loop
peeling and index set splitting.
The Omega test is implemented on top of the December 1990 version of
Michael Wolfe's tiny program, as well as in a stand-alone test driver.
The Omega test computes exact data dependence information, including checks
for array kills. The Omega test data dependence analyzer is substantially
more accurate than dependence analyzers in many existing research
and commercial systems.
Tiny is a research implementation of an interactive program
restructuring tool. Tiny computes data dependence relations
and interactively performs many restructuring transformations, such
as loop interchanging, distribution, skewing, ... . Michael Wolfe
has put his tiny tool into the public domain, which allowed
us to build on top of his software. We are very grateful for Michael's
contributions.
This implementation is a research prototype and has not been subjected
to rigorous testing. In other words:
THERE ARE BUGS IN THIS SOFTWARE
We don't know of any at the moment (other that the ones listed
under KNOWN BUGS/LIMITATIONS below), but we are sure that other,
undiscovered bugs remain in the software. This software has been
put into the public domain as a public service on an "as-is"
basis, without warranty or liability.
Since this version incorporates a large number of major new features,
there will almost certain be bug fixes that will be shortly released as
version 3.0.1.
If you register with us as someone who has a copy of the Omega test,
we will send you update notices. Send email to omega@cs.umd.edu to
be added to the list of registered users.
We are committed to continued distribution and support of the Omega
test for other researchers, and a number of research groups are already
incorporating the Omega test into their compilers and programming
environments. We welcome any additional researchers. Please stay
in contact with us if you plan to make serious us of the Omega test so
that we can provide you with updates and get feedback from your use.
The implementation of the Omega test and extensions to tiny have
been done by a number of people at the University of Maryland:
William Pugh
Dave Wonnacott
Udayan Borkar
Wayne Kelly
Jerry Sobieski
Vadim Maslov
This software is public domain, and no legal restrictions of any
kind whatsoever are placed on uses of it). You may do whatever you want
with it, and no guarantees of any kind are made about its performance or
lack of errors. You can copy it, use it, incorporate it or even sell it.
We request that any research or products that make use of this software
acknowledge that use and that you keep us informed of your use.
Please send mail to omega@cs.umd.edu if you wish to be added to a mailing
list for people interesting in using this software. We will notify
people on the mail list of bug fixes and new releases.
Also send mail to omega@cs.umd.edu if you have any trouble installing
the software, bug reports or questions.
Our work on this software has been supported by NSF grants CCR-8908900 and
CCR-9157384 and by a Packard Fellowship, as well as being based on
Michael Wolfe's original implementation of tiny.
FILES
-----
The following tar files can be ftp-ed from ftp.cs.umd.edu (128.8.128.8)
from the directory pub/omega:
* README This file
* WOLFE_README The readme file that originally accompanied Michael Wolfe's
distributing of tiny
* src.tar.Z Source for the omega test and our enhanced version of tiny
* sparc_demo.tar.Z Sun Sparc executable versions of the programs that can be
made from the src files, demo files, and documentation of
of how to use our extended version of tiny.
* dec3100_demo.tar.Z Decstations 3100 executable versions of the programs that
can be made from the src files. demo files, and documentation of
of how to use our extended version of tiny.
* demo.tar.Z Test files for demos
* rt.tar.Z Regression test files
* doc.tar.Z Documentation
* techReports A directory containing postscript and dvi copies of
relevant tech reports.
Together, these tar files constitute the entire tiny system, with the
following directories:
* include header files (from src.tar.Z)
* src source code (from src.tar.Z)
* obj makefile (from src.tar.Z), generated files (from sparc_bin.tar)
* doc documentation for tiny and for other drivers for the omega test
* demo sample files documented to show features of the Omega test and
extended tiny
* f2t A FORTRAN to tiny converter based on f2c
* rt regression test sample files and expected results
* misc shell scripts used for regression testing (rt.tar and src.tar)
The executable programs are:
* "t" the tiny environment, upgraded to use the omega test and
test for refinement, killing, and covering of dependences
* "f2t" A FORTRAN to tiny converter based on f2c