[llvm-commits] [test-suite] r159553 - in /test-suite/trunk/SingleSource/Benchmarks/Polybench: ./ datamining/ datamining/correlation/ datamining/covariance/ linear-algebra/ linear-algebra/kernels/ linear-algebra/kernels/2mm/ linear-algebra/kernels/3mm/ linear-algebra/kernels/atax/ linear-algebra/kernels/bicg/ linear-algebra/kernels/cholesky/ linear-algebra/kernels/doitgen/ linear-algebra/kernels/gemm/ linear-algebra/kernels/gemver/ linear-algebra/kernels/gesummv/ linear-algebra/kernels/mvt/ linear-algebra/kernels/symm/ ...

Tobias Grosser grosser at fim.uni-passau.de
Mon Jul 2 12:27:29 PDT 2012


Author: grosser
Date: Mon Jul  2 14:27:28 2012
New Revision: 159553

URL: http://llvm.org/viewvc/llvm-project?rev=159553&view=rev
Log:
Add Polybench 3.2 to the test suite.

Polybench 3.2 contains computations kernels from datamining, linear-algebra,
stencils computations. Polybench is available from sourceforge under the GPLv2
license.

Contributed by:  Douglas do Couto Teixeira  <douglasdocouto at gmail.com>

Added:
    test-suite/trunk/SingleSource/Benchmarks/Polybench/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/AUTHORS   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/LICENSE
    test-suite/trunk/SingleSource/Benchmarks/Polybench/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/README   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/compiler.opts   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/compiler.opts   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/Makefile   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.reference_output   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/
    test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/benchmark_list   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/create_cpped_version.sh   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/papi_counters.list   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.c   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.h   (with props)
    test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/time_benchmark.sh   (with props)

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/AUTHORS
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/AUTHORS?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/AUTHORS (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/AUTHORS Mon Jul  2 14:27:28 2012
@@ -0,0 +1,14 @@
+* * * * * * * * * * * * *
+* Authors of PolyBench  *
+* * * * * * * * * * * * *
+
+
+* Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+  Who provided packaging and harmonization of all test files,
+  the PolyBench infrastructure and machinery, and several
+  reference C files.
+
+* Uday Bondugula <uday at csa.iisc.ernet.in>
+  Who provided many of the original reference C files, including
+  Fortran to C translation.
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/AUTHORS
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/LICENSE
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/LICENSE?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/LICENSE (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/LICENSE Mon Jul  2 14:27:28 2012
@@ -0,0 +1,2 @@
+The Polybench 3.2 benchmark was obtained from sourceforge.org, where it is
+available under the GPLv2.

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,8 @@
+LEVEL = ../../..
+
+PARALLEL_DIRS  := datamining linear-algebra medley stencils
+
+include $(LEVEL)/Makefile.config
+include $(LEVEL)/Makefile.programs
+
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/README
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/README?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/README (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/README Mon Jul  2 14:27:28 2012
@@ -0,0 +1,233 @@
+* * * * * * * * * *
+* PolyBench/C 3.2 *
+* * * * * * * * * *
+
+Copyright (c) 2011-2012 the Ohio State University.
+Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+
+
+-------------
+* New in 3.2:
+-------------
+
+- Rename the package to PolyBench/C, to prepare for the upcoming
+  PolyBench/Fortran and PolyBench/GPU.
+- Fixed a typo in polybench.h, causing compilation problems for 5D arrays.
+- Fixed minor typos in correlation, atax, cholesky, fdtd-2d.
+- Added an option to build the test suite with constant loop bounds
+  (default is parametric loop bounds)
+
+
+-------------
+* New in 3.1:
+-------------
+
+- Fixed a typo in polybench.h, causing compilation problems for 3D arrays.
+- Set by default heap arrays, stack arrays are now optional.
+
+
+-------------
+* New in 3.0:
+-------------
+
+- Multiple dataset sizes are predefined. Each file comes now with a .h
+  header file defining the dataset.
+- Support of heap-allocated arrays. It uses a single malloc for the
+  entire array region, the data allocated is cast into a C99
+  multidimensional array.
+- One benchmark is out: gauss_filter
+- One benchmark is in: floyd-warshall
+- PAPI support has been greatly improved; it also can report the
+  counters on a specific core to be set by the user.
+
+
+
+----------------
+* Mailing lists:
+----------------
+
+** polybench-announces at lists.sourceforge.net:
+---------------------------------------------
+
+Announces about releases of PolyBench.
+
+** polybench-discussion at lists.sourceforge.net:
+----------------------------------------------
+
+General discussions reg. PolyBench.
+
+
+
+-----------------------
+* Available benchmarks:
+-----------------------
+
+::linear-algebra::
+linear-algebra/kernels:
+linear-algebra/kernels/2mm/2mm.c
+linear-algebra/kernels/3mm/3mm.c
+linear-algebra/kernels/atax/atax.c
+linear-algebra/kernels/bicg/bicg.c
+linear-algebra/kernels/cholesky/cholesky.c
+linear-algebra/kernels/doitgen/doitgen.c
+linear-algebra/kernels/gemm/gemm.c
+linear-algebra/kernels/gemver/gemver.c
+linear-algebra/kernels/gesummv/gesummv.c
+linear-algebra/kernels/mvt/mvt.c
+linear-algebra/kernels/symm/symm.c
+linear-algebra/kernels/syr2k/syr2k.c
+linear-algebra/kernels/syrk/syrk.c
+linear-algebra/kernels/trisolv/trisolv.c
+linear-algebra/kernels/trmm/trmm.c
+
+linear-algebra/solvers:
+linear-algebra/solvers/durbin/durbin.c
+linear-algebra/solvers/dynprog/dynprog.c
+linear-algebra/solvers/gramschmidt/gramschmidt.c
+linear-algebra/solvers/lu/lu.c
+linear-algebra/solvers/ludcmp/ludcmp.c
+
+::datamining::
+datamining/correlation/correlation.c
+datamining/covariance/covariance.c
+
+::medley::
+medley/floyd-warshall/floyd-warshall.c
+medley/reg_detect/reg_detect.c
+
+::stencils::
+stencils/adi/adi.c
+stencils/fdtd-2d/fdtd-2d.c
+stencils/fdtd-apml/fdtd-apml.c
+stencils/jacobi-1d-imper/jacobi-1d-imper.c
+stencils/jacobi-2d-imper/jacobi-2d-imper.c
+stencils/seidel-2d/seidel-2d.c
+
+
+
+------------------------------
+* Sample compilation commands:
+------------------------------
+
+
+** To compile a benchmark without any monitoring:
+-------------------------------------------------
+
+$> gcc -I utilities -I linear-algebra/kernels/atax utilities/polybench.c linear-algebra/kernels/atax/atax.c -o atax_base
+
+
+** To compile a benchmark with execution time reporting:
+--------------------------------------------------------
+
+$> gcc -O3 -I utilities -I linear-algebra/kernels/atax utilities/polybench.c linear-algebra/kernels/atax/atax.c -DPOLYBENCH_TIME -o atax_time
+
+
+** To generate the reference output of a benchmark:
+---------------------------------------------------
+
+$> gcc -O0 -I utilities -I linear-algebra/kernels/atax utilities/polybench.c linear-algebra/kernels/atax/atax.c -DPOLYBENCH_DUMP_ARRAYS -o atax_ref
+$> ./atax_ref 2>atax_ref.out
+
+
+
+
+-------------------------
+* Some available options:
+-------------------------
+
+They are all passed as macro definitions during compilation time (e.g,
+-Dname_of_the_option).
+
+- POLYBENCH_TIME: output execution time (gettimeofday) [default: off]
+
+- POLYBENCH_NO_FLUSH_CACHE: don't flush the cache before calling the
+  timer [default: flush the cache]
+
+- POLYBENCH_LINUX_FIFO_SCHEDULER: use FIFO real-time scheduler for the
+  kernel execution, the program must be run as root, under linux only,
+  and compiled with -lc [default: off]
+
+- POLYBENCH_CACHE_SIZE_KB: cache size to flush, in kB [default: 33MB]
+
+- POLYBENCH_STACK_ARRAYS: use stack allocation instead of malloc [default: off]
+
+- POLYBENCH_DUMP_ARRAYS: dump all live-out arrays on stderr [default: off]
+
+- POLYBENCH_CYCLE_ACCURATE_TIMER: Use Time Stamp Counter to monitor
+  the execution time of the kernel [default: off]
+
+- POLYBENCH_PAPI: turn on papi timing (see below).
+
+- MINI_DATASET, SMALL_DATASET, STANDARD_DATASET, LARGE_DATASET,
+  EXTRALARGE_DATASET: set the dataset size to be used
+  [default: STANDARD_DATASET]
+
+- POLYBENCH_USE_C99_PROTO: Use standard C99 prototype for the functions.
+
+- POLYBENCH_USE_SCALAR_LB: Use scalar loop bounds instead of parametric ones.
+
+
+
+---------------
+* PAPI support:
+---------------
+
+** To compile a benchmark with PAPI support:
+--------------------------------------------
+
+$> gcc -O3 -I utilities -I linear-algebra/kernels/atax utilities/polybench.c linear-algebra/kernels/atax/atax.c -DPOLYBENCH_PAPI -lpapi -o atax_papi
+
+
+** To specify which counter(s) to monitor:
+------------------------------------------
+
+Edit utilities/papi_counters.list, and add 1 line per event to
+monitor. Each line (including the last one) must finish with a ',' and
+both native and standard events are supported.
+
+The whole kernel is run one time per counter (no multiplexing) and
+there is no sampling being used for the counter value.
+
+
+
+------------------------------
+* Accurate performance timing:
+------------------------------
+
+With kernels that have an execution time in the orders of a few tens
+of milliseconds, it is critical to validate any performance number by
+repeating several times the experiment. A companion script is
+available to perform reasonable performance measurement of a PolyBench.
+
+$> gcc -O3 -I utilities -I linear-algebra/kernels/atax utilities/polybench.c linear-algebra/kernels/atax/atax.c -DPOLYBENCH_TIME -o atax_time
+$> ./utilities/time_benchmark.sh ./atax_time
+
+This script will run five times the benchmark (that must be a
+PolyBench compiled with -DPOLYBENCH_TIME), eliminate the two extremal
+times, and check that the deviation of the three remaining does not
+exceed a given threshold, set to 5%.
+
+It is also possible to use POLYBENCH_CYCLE_ACCURATE_TIMER to use the
+Time Stamp Counter instead of gettimeofday() to monitor the number of
+elapsed cycles.
+
+
+
+
+----------------------------------------
+* Generating macro-free benchmark suite:
+----------------------------------------
+
+(from the root of the archive:)
+$> PARGS="-I utilities -DPOLYBENCH_TIME";
+$> for i in `cat utilities/benchmark_list`; do create_cpped_version.sh $i "$PARGS"; done
+
+This create for each benchmark file 'xxx.c' a new file
+'xxx.preproc.c'. The PARGS variable in the above example can be set to
+the desired configuration, for instance to create a full C99 version
+(parametric arrays):
+
+$> PARGS="-I utilities -DPOLYBENCH_USE_C99_PROTO";
+$> for i in `cat utilities/benchmark_list`; do ./utilities/create_cpped_version.sh "$i" "$PARGS"; done
+
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/README
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,9 @@
+# SingleSource/Polybench/datamining
+# Makefile:  Build all subdirectories automatically
+
+LEVEL = ../../../..
+PARALLEL_DIRS = correlation covariance 
+
+include $(LEVEL)/Makefile.config
+include $(LEVEL)/Makefile.programs
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = correlation
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,163 @@
+/**
+ * correlation.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include "../../utilities/polybench.h"
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "correlation.h"
+
+
+/* Array initialization. */
+static
+void init_array (int m,
+		 int n,
+		 DATA_TYPE *float_n,
+		 DATA_TYPE POLYBENCH_2D(data,M,N,m,n))
+{
+  int i, j;
+
+  *float_n = 1.2;
+
+  for (i = 0; i < m; i++)
+    for (j = 0; j < n; j++)
+      data[i][j] = ((DATA_TYPE) i*j) / M;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int m,
+		 DATA_TYPE POLYBENCH_2D(symmat,M,M,m,m))
+
+{
+  int i, j;
+
+  for (i = 0; i < m; i++)
+    for (j = 0; j < m; j++) {
+      fprintf (stderr, DATA_PRINTF_MODIFIER, symmat[i][j]);
+      if ((i * m + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_correlation(int m, int n,
+			DATA_TYPE float_n,
+			DATA_TYPE POLYBENCH_2D(data,M,N,m,n),
+			DATA_TYPE POLYBENCH_2D(symmat,M,M,m,m),
+			DATA_TYPE POLYBENCH_1D(mean,M,m),
+			DATA_TYPE POLYBENCH_1D(stddev,M,m))
+{
+  int i, j, j1, j2;
+
+  DATA_TYPE eps = 0.1f;
+
+#define sqrt_of_array_cell(x,j) sqrt(x[j])
+
+#pragma scop
+  /* Determine mean of column vectors of input data matrix */
+  for (j = 0; j < _PB_M; j++)
+    {
+      mean[j] = 0.0;
+      for (i = 0; i < _PB_N; i++)
+	mean[j] += data[i][j];
+      mean[j] /= float_n;
+    }
+
+  /* Determine standard deviations of column vectors of data matrix. */
+  for (j = 0; j < _PB_M; j++)
+    {
+      stddev[j] = 0.0;
+      for (i = 0; i < _PB_N; i++)
+	stddev[j] += (data[i][j] - mean[j]) * (data[i][j] - mean[j]);
+      stddev[j] /= float_n;
+      stddev[j] = sqrt_of_array_cell(stddev, j);
+      /* The following in an inelegant but usual way to handle
+	 near-zero std. dev. values, which below would cause a zero-
+	 divide. */
+      stddev[j] = stddev[j] <= eps ? 1.0 : stddev[j];
+    }
+
+  /* Center and reduce the column vectors. */
+  for (i = 0; i < _PB_N; i++)
+    for (j = 0; j < _PB_M; j++)
+      {
+	data[i][j] -= mean[j];
+	data[i][j] /= sqrt(float_n) * stddev[j];
+      }
+
+  /* Calculate the m * m correlation matrix. */
+  for (j1 = 0; j1 < _PB_M-1; j1++)
+    {
+      symmat[j1][j1] = 1.0;
+      for (j2 = j1+1; j2 < _PB_M; j2++)
+	{
+	  symmat[j1][j2] = 0.0;
+	  for (i = 0; i < _PB_N; i++)
+	    symmat[j1][j2] += (data[i][j1] * data[i][j2]);
+	  symmat[j2][j1] = symmat[j1][j2];
+	}
+    }
+  symmat[_PB_M-1][_PB_M-1] = 1.0;
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+  int m = M;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE float_n;
+  POLYBENCH_2D_ARRAY_DECL(data,DATA_TYPE,M,N,m,n);
+  POLYBENCH_2D_ARRAY_DECL(symmat,DATA_TYPE,M,M,m,m);
+  POLYBENCH_1D_ARRAY_DECL(mean,DATA_TYPE,M,m);
+  POLYBENCH_1D_ARRAY_DECL(stddev,DATA_TYPE,M,m);
+
+  /* Initialize array(s). */
+  init_array (m, n, &float_n, POLYBENCH_ARRAY(data));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_correlation (m, n, float_n,
+		      POLYBENCH_ARRAY(data),
+		      POLYBENCH_ARRAY(symmat),
+		      POLYBENCH_ARRAY(mean),
+		      POLYBENCH_ARRAY(stddev));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(m, POLYBENCH_ARRAY(symmat)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(data);
+  POLYBENCH_FREE_ARRAY(symmat);
+  POLYBENCH_FREE_ARRAY(mean);
+  POLYBENCH_FREE_ARRAY(stddev);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * correlation.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef CORRELATION_H
+# define CORRELATION_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(N) && !defined(M)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#   define M 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 500
+#   define M 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 1000
+#   define M 1000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 2000
+#   define M 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 4000
+#   define M 4000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+# define _PB_M POLYBENCH_LOOP_BOUND(M,m)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !CORRELATION_H */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+7a921eb499d9fab524cee1ae065eee8c

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/correlation/correlation.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,12 @@
+LEVEL = ../../../../..
+
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = covariance
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,134 @@
+/**
+ * covariance.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include "../../utilities/polybench.h"
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "covariance.h"
+
+
+/* Array initialization. */
+static
+void init_array (int m, int n,
+		 DATA_TYPE *float_n,
+		 DATA_TYPE POLYBENCH_2D(data,M,N,m,n))
+{
+  int i, j;
+
+  *float_n = 1.2;
+
+  for (i = 0; i < M; i++)
+    for (j = 0; j < N; j++)
+      data[i][j] = ((DATA_TYPE) i*j) / M;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int m,
+		 DATA_TYPE POLYBENCH_2D(symmat,M,M,m,m))
+
+{
+  int i, j;
+
+  for (i = 0; i < m; i++)
+    for (j = 0; j < m; j++) {
+      fprintf (stderr, DATA_PRINTF_MODIFIER, symmat[i][j]);
+      if ((i * m + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_covariance(int m, int n,
+		       DATA_TYPE float_n,
+		       DATA_TYPE POLYBENCH_2D(data,M,N,m,n),
+		       DATA_TYPE POLYBENCH_2D(symmat,M,M,m,m),
+		       DATA_TYPE POLYBENCH_1D(mean,M,m))
+{
+  int i, j, j1, j2;
+
+#pragma scop
+  /* Determine mean of column vectors of input data matrix */
+  for (j = 0; j < _PB_M; j++)
+    {
+      mean[j] = 0.0;
+      for (i = 0; i < _PB_N; i++)
+        mean[j] += data[i][j];
+      mean[j] /= float_n;
+    }
+
+  /* Center the column vectors. */
+  for (i = 0; i < _PB_N; i++)
+    for (j = 0; j < _PB_M; j++)
+      data[i][j] -= mean[j];
+
+  /* Calculate the m * m covariance matrix. */
+  for (j1 = 0; j1 < _PB_M; j1++)
+    for (j2 = j1; j2 < _PB_M; j2++)
+      {
+        symmat[j1][j2] = 0.0;
+        for (i = 0; i < _PB_N; i++)
+	  symmat[j1][j2] += data[i][j1] * data[i][j2];
+        symmat[j2][j1] = symmat[j1][j2];
+      }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+  int m = M;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE float_n;
+  POLYBENCH_2D_ARRAY_DECL(data,DATA_TYPE,M,N,m,n);
+  POLYBENCH_2D_ARRAY_DECL(symmat,DATA_TYPE,M,M,m,m);
+  POLYBENCH_1D_ARRAY_DECL(mean,DATA_TYPE,M,m);
+
+
+  /* Initialize array(s). */
+  init_array (m, n, &float_n, POLYBENCH_ARRAY(data));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_covariance (m, n, float_n,
+		     POLYBENCH_ARRAY(data),
+		     POLYBENCH_ARRAY(symmat),
+		     POLYBENCH_ARRAY(mean));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(m, POLYBENCH_ARRAY(symmat)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(data);
+  POLYBENCH_FREE_ARRAY(symmat);
+  POLYBENCH_FREE_ARRAY(mean);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * covariance.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef COVARIANCE_H
+# define COVARIANCE_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(N) && !defined(M)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#   define M 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 500
+#   define M 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 1000
+#   define M 1000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 2000
+#   define M 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 4000
+#   define M 4000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+# define _PB_M POLYBENCH_LOOP_BOUND(M,m)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !COVARIANCE_H */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+1af493f3c2d7d6b5acbd61a3852415c8

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/datamining/covariance/covariance.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,9 @@
+# MultiSource/Polybench/linear-algebra
+# Makefile:  Build all subdirectories automatically
+
+LEVEL = ../../../..
+PARALLEL_DIRS = kernels solvers
+
+include $(LEVEL)/Makefile.config
+include $(LEVEL)/Makefile.programs
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,154 @@
+/**
+ * 2mm.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "2mm.h"
+
+
+/* Array initialization. */
+static
+void init_array(int ni, int nj, int nk, int nl,
+		DATA_TYPE *alpha,
+		DATA_TYPE *beta,
+		DATA_TYPE POLYBENCH_2D(A,NI,NK,ni,nl),
+		DATA_TYPE POLYBENCH_2D(B,NK,NJ,nk,nj),
+		DATA_TYPE POLYBENCH_2D(C,NL,NJ,nl,nj),
+		DATA_TYPE POLYBENCH_2D(D,NI,NL,ni,nl))
+{
+  int i, j;
+
+  *alpha = 32412;
+  *beta = 2123;
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nk; j++)
+      A[i][j] = ((DATA_TYPE) i*j) / ni;
+  for (i = 0; i < nk; i++)
+    for (j = 0; j < nj; j++)
+      B[i][j] = ((DATA_TYPE) i*(j+1)) / nj;
+  for (i = 0; i < nl; i++)
+    for (j = 0; j < nj; j++)
+      C[i][j] = ((DATA_TYPE) i*(j+3)) / nl;
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nl; j++)
+      D[i][j] = ((DATA_TYPE) i*(j+2)) / nk;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int ni, int nl,
+		 DATA_TYPE POLYBENCH_2D(D,NI,NL,ni,nl))
+{
+  int i, j;
+
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nl; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, D[i][j]);
+	if ((i * ni + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_2mm(int ni, int nj, int nk, int nl,
+		DATA_TYPE alpha,
+		DATA_TYPE beta,
+		DATA_TYPE POLYBENCH_2D(tmp,NI,NJ,ni,nj),
+		DATA_TYPE POLYBENCH_2D(A,NI,NK,ni,nk),
+		DATA_TYPE POLYBENCH_2D(B,NK,NJ,nk,nj),
+		DATA_TYPE POLYBENCH_2D(C,NL,NJ,nl,nj),
+		DATA_TYPE POLYBENCH_2D(D,NI,NL,ni,nl))
+{
+  int i, j, k;
+
+#pragma scop
+  /* D := alpha*A*B*C + beta*D */
+  for (i = 0; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NJ; j++)
+      {
+	tmp[i][j] = 0;
+	for (k = 0; k < _PB_NK; ++k)
+	  tmp[i][j] += alpha * A[i][k] * B[k][j];
+      }
+  for (i = 0; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NL; j++)
+      {
+	D[i][j] *= beta;
+	for (k = 0; k < _PB_NJ; ++k)
+	  D[i][j] += tmp[i][k] * C[k][j];
+      }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int ni = NI;
+  int nj = NJ;
+  int nk = NK;
+  int nl = NL;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE alpha;
+  DATA_TYPE beta;
+  POLYBENCH_2D_ARRAY_DECL(tmp,DATA_TYPE,NI,NJ,ni,nj);
+  POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NK,ni,nk);
+  POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NK,NJ,nk,nj);
+  POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,NL,NJ,nl,nj);
+  POLYBENCH_2D_ARRAY_DECL(D,DATA_TYPE,NI,NL,ni,nl);
+
+  /* Initialize array(s). */
+  init_array (ni, nj, nk, nl, &alpha, &beta,
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(B),
+	      POLYBENCH_ARRAY(C),
+	      POLYBENCH_ARRAY(D));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_2mm (ni, nj, nk, nl,
+	      alpha, beta,
+	      POLYBENCH_ARRAY(tmp),
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(B),
+	      POLYBENCH_ARRAY(C),
+	      POLYBENCH_ARRAY(D));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(ni, nl,  POLYBENCH_ARRAY(D)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(tmp);
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(B);
+  POLYBENCH_FREE_ARRAY(C);
+  POLYBENCH_FREE_ARRAY(D);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,66 @@
+/**
+ * 2mm.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef _2MM_H
+# define _2MM_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NI) && !defined(NJ) && !defined(NK)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NI 32
+#   define NJ 32
+#   define NK 32
+#   define NL 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NI 128
+#   define NJ 128
+#   define NK 128
+#   define NL 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NI 1024
+#   define NJ 1024
+#   define NK 1024
+#   define NL 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NI 2000
+#   define NJ 2000
+#   define NK 2000
+#   define NL 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NI 4000
+#   define NJ 4000
+#   define NK 4000
+#   define NL 4000
+#  endif
+# endif /* !N */
+
+# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni)
+# define _PB_NJ POLYBENCH_LOOP_BOUND(NJ,nj)
+# define _PB_NK POLYBENCH_LOOP_BOUND(NK,nk)
+# define _PB_NL POLYBENCH_LOOP_BOUND(NL,nl)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !_2MM */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+1545695c0f729449227b181c7785d63c

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/2mm.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = 2mm
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/compiler.opts
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/compiler.opts?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/compiler.opts (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/compiler.opts Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+-DNI=1024 -DNJ=1024 -DNK=1024 -DNL=1024

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/2mm/compiler.opts
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,163 @@
+/**
+ * 3mm.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "3mm.h"
+
+
+/* Array initialization. */
+static
+void init_array(int ni, int nj, int nk, int nl, int nm,
+		DATA_TYPE POLYBENCH_2D(A,NI,NK,ni,nk),
+		DATA_TYPE POLYBENCH_2D(B,NK,NJ,nk,nj),
+		DATA_TYPE POLYBENCH_2D(C,NJ,NM,nj,nm),
+		DATA_TYPE POLYBENCH_2D(D,NM,NL,nm,nl))
+{
+  int i, j;
+
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nk; j++)
+      A[i][j] = ((DATA_TYPE) i*j) / ni;
+  for (i = 0; i < nk; i++)
+    for (j = 0; j < nj; j++)
+      B[i][j] = ((DATA_TYPE) i*(j+1)) / nj;
+  for (i = 0; i < nj; i++)
+    for (j = 0; j < nm; j++)
+      C[i][j] = ((DATA_TYPE) i*(j+3)) / nl;
+  for (i = 0; i < nm; i++)
+    for (j = 0; j < nl; j++)
+      D[i][j] = ((DATA_TYPE) i*(j+2)) / nk;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int ni, int nl,
+		 DATA_TYPE POLYBENCH_2D(G,NI,NL,ni,nl))
+{
+  int i, j;
+
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nl; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, G[i][j]);
+	if ((i * ni + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_3mm(int ni, int nj, int nk, int nl, int nm,
+		DATA_TYPE POLYBENCH_2D(E,NI,NJ,ni,nj),
+		DATA_TYPE POLYBENCH_2D(A,NI,NK,ni,nk),
+		DATA_TYPE POLYBENCH_2D(B,NK,NJ,nk,nj),
+		DATA_TYPE POLYBENCH_2D(F,NJ,NL,nj,nl),
+		DATA_TYPE POLYBENCH_2D(C,NJ,NM,nj,nm),
+		DATA_TYPE POLYBENCH_2D(D,NM,NL,nm,nl),
+		DATA_TYPE POLYBENCH_2D(G,NI,NL,ni,nl))
+{
+  int i, j, k;
+
+#pragma scop
+  /* E := A*B */
+  for (i = 0; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NJ; j++)
+      {
+	E[i][j] = 0;
+	for (k = 0; k < _PB_NK; ++k)
+	  E[i][j] += A[i][k] * B[k][j];
+      }
+  /* F := C*D */
+  for (i = 0; i < _PB_NJ; i++)
+    for (j = 0; j < _PB_NL; j++)
+      {
+	F[i][j] = 0;
+	for (k = 0; k < _PB_NM; ++k)
+	  F[i][j] += C[i][k] * D[k][j];
+      }
+  /* G := E*F */
+  for (i = 0; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NL; j++)
+      {
+	G[i][j] = 0;
+	for (k = 0; k < _PB_NJ; ++k)
+	  G[i][j] += E[i][k] * F[k][j];
+      }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int ni = NI;
+  int nj = NJ;
+  int nk = NK;
+  int nl = NL;
+  int nm = NM;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(E, DATA_TYPE, NI, NJ, ni, nj);
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, NI, NK, ni, nk);
+  POLYBENCH_2D_ARRAY_DECL(B, DATA_TYPE, NK, NJ, nk, nj);
+  POLYBENCH_2D_ARRAY_DECL(F, DATA_TYPE, NJ, NL, nj, nl);
+  POLYBENCH_2D_ARRAY_DECL(C, DATA_TYPE, NJ, NM, nj, nm);
+  POLYBENCH_2D_ARRAY_DECL(D, DATA_TYPE, NM, NL, nm, nl);
+  POLYBENCH_2D_ARRAY_DECL(G, DATA_TYPE, NI, NL, ni, nl);
+
+  /* Initialize array(s). */
+  init_array (ni, nj, nk, nl, nm,
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(B),
+	      POLYBENCH_ARRAY(C),
+	      POLYBENCH_ARRAY(D));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_3mm (ni, nj, nk, nl, nm,
+	      POLYBENCH_ARRAY(E),
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(B),
+	      POLYBENCH_ARRAY(F),
+	      POLYBENCH_ARRAY(C),
+	      POLYBENCH_ARRAY(D),
+	      POLYBENCH_ARRAY(G));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(ni, nl,  POLYBENCH_ARRAY(G)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(E);
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(B);
+  POLYBENCH_FREE_ARRAY(F);
+  POLYBENCH_FREE_ARRAY(C);
+  POLYBENCH_FREE_ARRAY(D);
+  POLYBENCH_FREE_ARRAY(G);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,72 @@
+/**
+ * 3mm.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef _3MM_H
+# define _3MM_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NI) && !defined(NJ) && !defined(NK)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NI 32
+#   define NJ 32
+#   define NK 32
+#   define NL 32
+#   define NM 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NI 128
+#   define NJ 128
+#   define NK 128
+#   define NL 128
+#   define NM 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NI 1024
+#   define NJ 1024
+#   define NK 1024
+#   define NL 1024
+#   define NM 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NI 2000
+#   define NJ 2000
+#   define NK 2000
+#   define NL 2000
+#   define NM 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NI 4000
+#   define NJ 4000
+#   define NK 4000
+#   define NL 4000
+#   define NM 4000
+#  endif
+# endif /* !N */
+
+# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni)
+# define _PB_NJ POLYBENCH_LOOP_BOUND(NJ,nj)
+# define _PB_NK POLYBENCH_LOOP_BOUND(NK,nk)
+# define _PB_NL POLYBENCH_LOOP_BOUND(NL,nl)
+# define _PB_NM POLYBENCH_LOOP_BOUND(NM,nm)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !_3MM */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+66eb54f857bc65f405ee520b4f181935

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/3mm.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG         = 3mm
+CFLAGS       += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/compiler.opts
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/compiler.opts?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/compiler.opts (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/compiler.opts Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+-DNI=1024 -DNJ=1024 -DNK=1024 -DNL=1024 -DNM=1024

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/3mm/compiler.opts
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,11 @@
+# SingleSource/Polybench/linear-algebra
+# Makefile:  Build all subdirectories automatically
+
+LEVEL = ../../../../..
+PARALLEL_DIRS = 2mm 3mm atax bicg cholesky doitgen gemm gemver gesummv mvt \
+ 		symm syr2k syrk trisolv trmm
+		
+
+include $(LEVEL)/Makefile.config
+include $(LEVEL)/Makefile.programs
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = atax
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,121 @@
+/**
+ * atax.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "atax.h"
+
+
+/* Array initialization. */
+static
+void init_array (int nx, int ny,
+		 DATA_TYPE POLYBENCH_2D(A,NX,NY,nx,ny),
+		 DATA_TYPE POLYBENCH_1D(x,NY,ny))
+{
+  int i, j;
+
+  for (i = 0; i < ny; i++)
+      x[i] = i * M_PI;
+  for (i = 0; i < nx; i++)
+    for (j = 0; j < ny; j++)
+      A[i][j] = ((DATA_TYPE) i*(j+1)) / nx;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int nx,
+		 DATA_TYPE POLYBENCH_1D(y,NX,nx))
+
+{
+  int i;
+
+  for (i = 0; i < nx; i++) {
+    fprintf (stderr, DATA_PRINTF_MODIFIER, y[i]);
+    if (i % 20 == 0) fprintf (stderr, "\n");
+  }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_atax(int nx, int ny,
+		 DATA_TYPE POLYBENCH_2D(A,NX,NY,nx,ny),
+		 DATA_TYPE POLYBENCH_1D(x,NY,ny),
+		 DATA_TYPE POLYBENCH_1D(y,NY,ny),
+		 DATA_TYPE POLYBENCH_1D(tmp,NX,nx))
+{
+  int i, j;
+
+#pragma scop
+  for (i = 0; i < _PB_NY; i++)
+    y[i] = 0;
+  for (i = 0; i < _PB_NX; i++)
+    {
+      tmp[i] = 0;
+      for (j = 0; j < _PB_NY; j++)
+	tmp[i] = tmp[i] + A[i][j] * x[j];
+      for (j = 0; j < _PB_NY; j++)
+	y[j] = y[j] + A[i][j] * tmp[i];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int nx = NX;
+  int ny = NY;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, NX, NY, nx, ny);
+  POLYBENCH_1D_ARRAY_DECL(x, DATA_TYPE, NY, ny);
+  POLYBENCH_1D_ARRAY_DECL(y, DATA_TYPE, NY, ny);
+  POLYBENCH_1D_ARRAY_DECL(tmp, DATA_TYPE, NX, nx);
+
+  /* Initialize array(s). */
+  init_array (nx, ny, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(x));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_atax (nx, ny,
+	       POLYBENCH_ARRAY(A),
+	       POLYBENCH_ARRAY(x),
+	       POLYBENCH_ARRAY(y),
+	       POLYBENCH_ARRAY(tmp));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(nx, POLYBENCH_ARRAY(y)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(x);
+  POLYBENCH_FREE_ARRAY(y);
+  POLYBENCH_FREE_ARRAY(tmp);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * atax.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef ATAX_H
+# define ATAX_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NX) && !defined(NY)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NX 32
+#   define NY 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NX 500
+#   define NY 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NX 4000
+#   define NY 4000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NX 8000
+#   define NY 8000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NX 100000
+#   define NY 100000
+#  endif
+# endif /* !N */
+
+# define _PB_NX POLYBENCH_LOOP_BOUND(NX,nx)
+# define _PB_NY POLYBENCH_LOOP_BOUND(NY,ny)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !ATAX */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+d56aab8d63bea01bd7e864dd3406f266

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/atax/atax.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = bicg
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,137 @@
+/**
+ * bicg.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "bicg.h"
+
+
+/* Array initialization. */
+static
+void init_array (int nx, int ny,
+		 DATA_TYPE POLYBENCH_2D(A,NX,NY,nx,ny),
+		 DATA_TYPE POLYBENCH_1D(r,NX,nx),
+		 DATA_TYPE POLYBENCH_1D(p,NY,ny))
+{
+  int i, j;
+
+  for (i = 0; i < ny; i++)
+    p[i] = i * M_PI;
+  for (i = 0; i < nx; i++) {
+    r[i] = i * M_PI;
+    for (j = 0; j < ny; j++)
+      A[i][j] = ((DATA_TYPE) i*(j+1))/nx;
+  }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int nx, int ny,
+		 DATA_TYPE POLYBENCH_1D(s,NY,ny),
+		 DATA_TYPE POLYBENCH_1D(q,NX,nx))
+
+{
+  int i;
+
+  for (i = 0; i < ny; i++) {
+    fprintf (stderr, DATA_PRINTF_MODIFIER, s[i]);
+    if (i % 20 == 0) fprintf (stderr, "\n");
+  }
+  for (i = 0; i < nx; i++) {
+    fprintf (stderr, DATA_PRINTF_MODIFIER, q[i]);
+    if (i % 20 == 0) fprintf (stderr, "\n");
+  }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_bicg(int nx, int ny,
+		 DATA_TYPE POLYBENCH_2D(A,NX,NY,nx,ny),
+		 DATA_TYPE POLYBENCH_1D(s,NY,ny),
+		 DATA_TYPE POLYBENCH_1D(q,NX,nx),
+		 DATA_TYPE POLYBENCH_1D(p,NY,ny),
+		 DATA_TYPE POLYBENCH_1D(r,NX,nx))
+{
+  int i, j;
+
+#pragma scop
+  for (i = 0; i < _PB_NY; i++)
+    s[i] = 0;
+  for (i = 0; i < _PB_NX; i++)
+    {
+      q[i] = 0;
+      for (j = 0; j < _PB_NY; j++)
+	{
+	  s[j] = s[j] + r[i] * A[i][j];
+	  q[i] = q[i] + A[i][j] * p[j];
+	}
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int nx = NX;
+  int ny = NY;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, NX, NY, nx, ny);
+  POLYBENCH_1D_ARRAY_DECL(s, DATA_TYPE, NY, ny);
+  POLYBENCH_1D_ARRAY_DECL(q, DATA_TYPE, NX, nx);
+  POLYBENCH_1D_ARRAY_DECL(p, DATA_TYPE, NY, ny);
+  POLYBENCH_1D_ARRAY_DECL(r, DATA_TYPE, NX, nx);
+
+  /* Initialize array(s). */
+  init_array (nx, ny,
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(r),
+	      POLYBENCH_ARRAY(p));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_bicg (nx, ny,
+	       POLYBENCH_ARRAY(A),
+	       POLYBENCH_ARRAY(s),
+	       POLYBENCH_ARRAY(q),
+	       POLYBENCH_ARRAY(p),
+	       POLYBENCH_ARRAY(r));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(nx, ny, POLYBENCH_ARRAY(s), POLYBENCH_ARRAY(q)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(s);
+  POLYBENCH_FREE_ARRAY(q);
+  POLYBENCH_FREE_ARRAY(p);
+  POLYBENCH_FREE_ARRAY(r);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * bicg.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef BICG_H
+# define BICG_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NX) && !defined(NY)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NX 32
+#   define NY 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NX 500
+#   define NY 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NX 4000
+#   define NY 4000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NX 8000
+#   define NY 8000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NX 100000
+#   define NY 100000
+#  endif
+# endif /* !N */
+
+# define _PB_NX POLYBENCH_LOOP_BOUND(NX,nx)
+# define _PB_NY POLYBENCH_LOOP_BOUND(NY,ny)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !BICG */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+cb5bae69c1a3653edab30d8bcf027bbf

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/bicg/bicg.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = cholesky
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,136 @@
+/**
+ * cholesky.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "cholesky.h"
+
+
+/* Array initialization. */
+static
+void init_array(int n,
+		DATA_TYPE POLYBENCH_1D(p,N,n),
+		DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+{
+  int i, j;
+  /*
+  LLVM: This change ensures we do not calculate nan values, which are
+        formatted differently on different platforms and which may also
+        be optimized unexpectedly.
+  Original code:
+  for (i = 0; i < n; i++)
+    {
+      p[i] = 1.0 / n;
+      for (j = 0; j < n; j++)
+        A[i][j] = 1.0 / n;
+     }
+  */
+  for (i = 0; i < n; i++)
+    {
+      p[i] = i + n;
+      for (j = 0; j < n; j++)
+      	A[i][j] = j + n;
+    }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++) {
+    fprintf (stderr, DATA_PRINTF_MODIFIER, A[i][j]);
+    if ((i * N + j) % 20 == 0) fprintf (stderr, "\n");
+  }
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_cholesky(int n,
+		     DATA_TYPE POLYBENCH_1D(p,N,n),
+		     DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+{
+  int i, j, k;
+
+  DATA_TYPE x;
+
+#pragma scop
+for (i = 0; i < _PB_N; ++i)
+  {
+   /*
+      LLVM: This change ensures we do not calculate nan values, which are
+            formatted differently on different platforms and which may also
+            be optimized unexpectedly.    
+      Original line:      
+            x = A[i][i];      
+    */      
+    x = A[i][i] * n;
+    for (j = 0; j <= i - 1; ++j)
+      x = x - A[i][j] * A[i][j];
+    p[i] = 1.0 / sqrt(x);
+    for (j = i + 1; j < _PB_N; ++j)
+      {
+	x = A[i][j];
+	for (k = 0; k <= i - 1; ++k)
+	  x = x - A[j][k] * A[i][k];
+	A[j][i] = x * p[i];
+      }
+  }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
+  POLYBENCH_1D_ARRAY_DECL(p, DATA_TYPE, N, n);
+
+
+  /* Initialize array(s). */
+  init_array (n, POLYBENCH_ARRAY(p), POLYBENCH_ARRAY(A));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_cholesky (n, POLYBENCH_ARRAY(p), POLYBENCH_ARRAY(A));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(p);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,48 @@
+/**
+ * cholesky.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef CHOLESKY_H
+# define CHOLESKY_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(N)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 4000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !CHOLESKY */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+1fb54fb516d4be7c0bb185f73c7d3292

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/cholesky/cholesky.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = doitgen
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,123 @@
+/**
+ * doitgen.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "doitgen.h"
+
+
+/* Array initialization. */
+static
+void init_array(int nr, int nq, int np,
+		DATA_TYPE POLYBENCH_3D(A,NR,NQ,NP,nr,nq,np),
+		DATA_TYPE POLYBENCH_2D(C4,NP,NP,np,np))
+{
+  int i, j, k;
+
+  for (i = 0; i < nr; i++)
+    for (j = 0; j < nq; j++)
+      for (k = 0; k < np; k++)
+	A[i][j][k] = ((DATA_TYPE) i*j + k) / np;
+  for (i = 0; i < np; i++)
+    for (j = 0; j < np; j++)
+      C4[i][j] = ((DATA_TYPE) i*j) / np;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int nr, int nq, int np,
+		 DATA_TYPE POLYBENCH_3D(A,NR,NQ,NP,nr,nq,np))
+{
+  int i, j, k;
+
+  for (i = 0; i < nr; i++)
+    for (j = 0; j < nq; j++)
+      for (k = 0; k < np; k++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, A[i][j][k]);
+	if (i % 20 == 0) fprintf (stderr, "\n");
+      }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_doitgen(int nr, int nq, int np,
+		    DATA_TYPE POLYBENCH_3D(A,NR,NQ,NP,nr,nq,np),
+		    DATA_TYPE POLYBENCH_2D(C4,NP,NP,np,np),
+		    DATA_TYPE POLYBENCH_3D(sum,NR,NQ,NP,nr,nq,np))
+{
+  int r, q, p, s;
+
+#pragma scop
+  for (r = 0; r < _PB_NR; r++)
+    for (q = 0; q < _PB_NQ; q++)  {
+      for (p = 0; p < _PB_NP; p++)  {
+	sum[r][q][p] = 0;
+	for (s = 0; s < _PB_NP; s++)
+	  sum[r][q][p] = sum[r][q][p] + A[r][q][s] * C4[s][p];
+      }
+      for (p = 0; p < _PB_NR; p++)
+	A[r][q][p] = sum[r][q][p];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int nr = NR;
+  int nq = NQ;
+  int np = NP;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_3D_ARRAY_DECL(A,DATA_TYPE,NR,NQ,NP,nr,nq,np);
+  POLYBENCH_3D_ARRAY_DECL(sum,DATA_TYPE,NR,NQ,NP,nr,nq,np);
+  POLYBENCH_2D_ARRAY_DECL(C4,DATA_TYPE,NP,NP,np,np);
+
+  /* Initialize array(s). */
+  init_array (nr, nq, np,
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(C4));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_doitgen (nr, nq, np,
+		  POLYBENCH_ARRAY(A),
+		  POLYBENCH_ARRAY(C4),
+		  POLYBENCH_ARRAY(sum));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(nr, nq, np,  POLYBENCH_ARRAY(A)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(sum);
+  POLYBENCH_FREE_ARRAY(C4);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,60 @@
+/**
+ * doitgen.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef DOITGEN_H
+# define DOITGEN_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NQ) && !defined(NR) && !defined(NP)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NQ 10
+#   define NR 10
+#   define NP 10
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NQ 32
+#   define NR 32
+#   define NP 32
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NQ 128
+#   define NR 128
+#   define NP 128
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NQ 256
+#   define NR 256
+#   define NP 256
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NQ 1000
+#   define NR 1000
+#   define NP 1000
+#  endif
+# endif /* !N */
+
+# define _PB_NQ POLYBENCH_LOOP_BOUND(NQ,nq)
+# define _PB_NR POLYBENCH_LOOP_BOUND(NR,nr)
+# define _PB_NP POLYBENCH_LOOP_BOUND(NP,np)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !DOITGEN */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+65adf58a59d20588e34936ce58fd7e0f

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/doitgen/doitgen.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = gemm
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,133 @@
+/**
+ * gemm.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "gemm.h"
+
+
+/* Array initialization. */
+static
+void init_array(int ni, int nj, int nk,
+		DATA_TYPE *alpha,
+		DATA_TYPE *beta,
+		DATA_TYPE POLYBENCH_2D(C,NI,NJ,ni,nj),
+		DATA_TYPE POLYBENCH_2D(A,NI,NK,ni,nk),
+		DATA_TYPE POLYBENCH_2D(B,NK,NJ,nk,nj))
+{
+  int i, j;
+
+  *alpha = 32412;
+  *beta = 2123;
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nj; j++)
+      C[i][j] = ((DATA_TYPE) i*j) / ni;
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nk; j++)
+      A[i][j] = ((DATA_TYPE) i*j) / ni;
+  for (i = 0; i < nk; i++)
+    for (j = 0; j < nj; j++)
+      B[i][j] = ((DATA_TYPE) i*j) / ni;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int ni, int nj,
+		 DATA_TYPE POLYBENCH_2D(C,NI,NJ,ni,nj))
+{
+  int i, j;
+
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nj; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, C[i][j]);
+	if ((i * ni + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_gemm(int ni, int nj, int nk,
+		 DATA_TYPE alpha,
+		 DATA_TYPE beta,
+		 DATA_TYPE POLYBENCH_2D(C,NI,NJ,ni,nj),
+		 DATA_TYPE POLYBENCH_2D(A,NI,NK,ni,nk),
+		 DATA_TYPE POLYBENCH_2D(B,NK,NJ,nk,nj))
+{
+  int i, j, k;
+
+#pragma scop
+  /* C := alpha*A*B + beta*C */
+  for (i = 0; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NJ; j++)
+      {
+	C[i][j] *= beta;
+	for (k = 0; k < _PB_NK; ++k)
+	  C[i][j] += alpha * A[i][k] * B[k][j];
+      }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int ni = NI;
+  int nj = NJ;
+  int nk = NK;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE alpha;
+  DATA_TYPE beta;
+  POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,NI,NJ,ni,nj);
+  POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NK,ni,nk);
+  POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NK,NJ,nk,nj);
+
+  /* Initialize array(s). */
+  init_array (ni, nj, nk, &alpha, &beta,
+	      POLYBENCH_ARRAY(C),
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(B));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_gemm (ni, nj, nk,
+	       alpha, beta,
+	       POLYBENCH_ARRAY(C),
+	       POLYBENCH_ARRAY(A),
+	       POLYBENCH_ARRAY(B));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(ni, nj,  POLYBENCH_ARRAY(C)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(C);
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(B);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,60 @@
+/**
+ * gemm.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef GEMM_H
+# define GEMM_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NI) && !defined(NJ) && !defined(NK)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NI 32
+#   define NJ 32
+#   define NK 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NI 128
+#   define NJ 128
+#   define NK 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NI 1024
+#   define NJ 1024
+#   define NK 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NI 2000
+#   define NJ 2000
+#   define NK 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NI 4000
+#   define NJ 4000
+#   define NK 4000
+#  endif
+# endif /* !N */
+
+# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni)
+# define _PB_NJ POLYBENCH_LOOP_BOUND(NJ,nj)
+# define _PB_NK POLYBENCH_LOOP_BOUND(NK,nk)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !GEMM */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+8e49771874c426a32c3cf2f1f3aa0385

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemm/gemm.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = gemver
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,177 @@
+/**
+ * gemver.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "gemver.h"
+
+
+/* Array initialization. */
+static
+void init_array (int n,
+		 DATA_TYPE *alpha,
+		 DATA_TYPE *beta,
+		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+		 DATA_TYPE POLYBENCH_1D(u1,N,n),
+		 DATA_TYPE POLYBENCH_1D(v1,N,n),
+		 DATA_TYPE POLYBENCH_1D(u2,N,n),
+		 DATA_TYPE POLYBENCH_1D(v2,N,n),
+		 DATA_TYPE POLYBENCH_1D(w,N,n),
+		 DATA_TYPE POLYBENCH_1D(x,N,n),
+		 DATA_TYPE POLYBENCH_1D(y,N,n),
+		 DATA_TYPE POLYBENCH_1D(z,N,n))
+{
+  int i, j;
+
+  *alpha = 43532;
+  *beta = 12313;
+
+  for (i = 0; i < n; i++)
+    {
+      u1[i] = i;
+      u2[i] = (i+1)/n/2.0;
+      v1[i] = (i+1)/n/4.0;
+      v2[i] = (i+1)/n/6.0;
+      y[i] = (i+1)/n/8.0;
+      z[i] = (i+1)/n/9.0;
+      x[i] = 0.0;
+      w[i] = 0.0;
+      for (j = 0; j < n; j++)
+	A[i][j] = ((DATA_TYPE) i*j) / n;
+    }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_1D(w,N,n))
+{
+  int i;
+
+  for (i = 0; i < n; i++) {
+    fprintf (stderr, DATA_PRINTF_MODIFIER, w[i]);
+    if (i % 20 == 0) fprintf (stderr, "\n");
+  }
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_gemver(int n,
+		   DATA_TYPE alpha,
+		   DATA_TYPE beta,
+		   DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+		   DATA_TYPE POLYBENCH_1D(u1,N,n),
+		   DATA_TYPE POLYBENCH_1D(v1,N,n),
+		   DATA_TYPE POLYBENCH_1D(u2,N,n),
+		   DATA_TYPE POLYBENCH_1D(v2,N,n),
+		   DATA_TYPE POLYBENCH_1D(w,N,n),
+		   DATA_TYPE POLYBENCH_1D(x,N,n),
+		   DATA_TYPE POLYBENCH_1D(y,N,n),
+		   DATA_TYPE POLYBENCH_1D(z,N,n))
+{
+  int i, j;
+
+#pragma scop
+
+  for (i = 0; i < _PB_N; i++)
+    for (j = 0; j < _PB_N; j++)
+      A[i][j] = A[i][j] + u1[i] * v1[j] + u2[i] * v2[j];
+
+  for (i = 0; i < _PB_N; i++)
+    for (j = 0; j < _PB_N; j++)
+      x[i] = x[i] + beta * A[j][i] * y[j];
+
+  for (i = 0; i < _PB_N; i++)
+    x[i] = x[i] + z[i];
+
+  for (i = 0; i < _PB_N; i++)
+    for (j = 0; j < _PB_N; j++)
+      w[i] = w[i] +  alpha * A[i][j] * x[j];
+
+#pragma endscop
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE alpha;
+  DATA_TYPE beta;
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
+  POLYBENCH_1D_ARRAY_DECL(u1, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(v1, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(u2, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(v2, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(w, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(x, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(y, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(z, DATA_TYPE, N, n);
+
+
+  /* Initialize array(s). */
+  init_array (n, &alpha, &beta,
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(u1),
+	      POLYBENCH_ARRAY(v1),
+	      POLYBENCH_ARRAY(u2),
+	      POLYBENCH_ARRAY(v2),
+	      POLYBENCH_ARRAY(w),
+	      POLYBENCH_ARRAY(x),
+	      POLYBENCH_ARRAY(y),
+	      POLYBENCH_ARRAY(z));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_gemver (n, alpha, beta,
+		 POLYBENCH_ARRAY(A),
+		 POLYBENCH_ARRAY(u1),
+		 POLYBENCH_ARRAY(v1),
+		 POLYBENCH_ARRAY(u2),
+		 POLYBENCH_ARRAY(v2),
+		 POLYBENCH_ARRAY(w),
+		 POLYBENCH_ARRAY(x),
+		 POLYBENCH_ARRAY(y),
+		 POLYBENCH_ARRAY(z));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(w)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(u1);
+  POLYBENCH_FREE_ARRAY(v1);
+  POLYBENCH_FREE_ARRAY(u2);
+  POLYBENCH_FREE_ARRAY(v2);
+  POLYBENCH_FREE_ARRAY(w);
+  POLYBENCH_FREE_ARRAY(x);
+  POLYBENCH_FREE_ARRAY(y);
+  POLYBENCH_FREE_ARRAY(z);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,48 @@
+/**
+ * gemver.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef GEMVER_H
+# define GEMVER_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# ifndef N
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 4000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 8000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 100000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !GEMVER */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+ac3ff05caf9d54194c1534186f5807f7

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gemver/gemver.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = gesummv
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,140 @@
+/**
+ * gesummv.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "gesummv.h"
+
+
+/* Array initialization. */
+static
+void init_array(int n,
+		DATA_TYPE *alpha,
+		DATA_TYPE *beta,
+		DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+		DATA_TYPE POLYBENCH_2D(B,N,N,n,n),
+		DATA_TYPE POLYBENCH_1D(x,N,n))
+{
+  int i, j;
+
+  *alpha = 43532;
+  *beta = 12313;
+  for (i = 0; i < n; i++)
+    {
+      x[i] = ((DATA_TYPE) i) / n;
+      for (j = 0; j < n; j++) {
+	A[i][j] = ((DATA_TYPE) i*j) / n;
+	B[i][j] = ((DATA_TYPE) i*j) / n;
+      }
+    }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_1D(y,N,n))
+
+{
+  int i;
+
+  for (i = 0; i < n; i++) {
+    fprintf (stderr, DATA_PRINTF_MODIFIER, y[i]);
+    if (i % 20 == 0) fprintf (stderr, "\n");
+  }
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_gesummv(int n,
+		    DATA_TYPE alpha,
+		    DATA_TYPE beta,
+		    DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+		    DATA_TYPE POLYBENCH_2D(B,N,N,n,n),
+		    DATA_TYPE POLYBENCH_1D(tmp,N,n),
+		    DATA_TYPE POLYBENCH_1D(x,N,n),
+		    DATA_TYPE POLYBENCH_1D(y,N,n))
+{
+  int i, j;
+
+#pragma scop
+  for (i = 0; i < _PB_N; i++)
+    {
+      tmp[i] = 0;
+      y[i] = 0;
+      for (j = 0; j < _PB_N; j++)
+	{
+	  tmp[i] = A[i][j] * x[j] + tmp[i];
+	  y[i] = B[i][j] * x[j] + y[i];
+	}
+      y[i] = alpha * tmp[i] + beta * y[i];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE alpha;
+  DATA_TYPE beta;
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
+  POLYBENCH_2D_ARRAY_DECL(B, DATA_TYPE, N, N, n, n);
+  POLYBENCH_1D_ARRAY_DECL(tmp, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(x, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(y, DATA_TYPE, N, n);
+
+
+  /* Initialize array(s). */
+  init_array (n, &alpha, &beta,
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(B),
+	      POLYBENCH_ARRAY(x));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_gesummv (n, alpha, beta,
+		  POLYBENCH_ARRAY(A),
+		  POLYBENCH_ARRAY(B),
+		  POLYBENCH_ARRAY(tmp),
+		  POLYBENCH_ARRAY(x),
+		  POLYBENCH_ARRAY(y));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(y)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(B);
+  POLYBENCH_FREE_ARRAY(tmp);
+  POLYBENCH_FREE_ARRAY(x);
+  POLYBENCH_FREE_ARRAY(y);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,48 @@
+/**
+ * gesummv.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef GESUMMV_H
+# define GESUMMV_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# ifndef N
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 4000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 8000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 100000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !GESUMMV */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+8cafbcc8e2ea63cccdf5de115af25744

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/gesummv/gesummv.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = mvt
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,134 @@
+/**
+ * mvt.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "mvt.h"
+
+
+/* Array initialization. */
+static
+void init_array(int n,
+		DATA_TYPE POLYBENCH_1D(x1,N,n),
+		DATA_TYPE POLYBENCH_1D(x2,N,n),
+		DATA_TYPE POLYBENCH_1D(y_1,N,n),
+		DATA_TYPE POLYBENCH_1D(y_2,N,n),
+		DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    {
+      x1[i] = ((DATA_TYPE) i) / n;
+      x2[i] = ((DATA_TYPE) i + 1) / n;
+      y_1[i] = ((DATA_TYPE) i + 3) / n;
+      y_2[i] = ((DATA_TYPE) i + 4) / n;
+      for (j = 0; j < n; j++)
+	A[i][j] = ((DATA_TYPE) i*j) / N;
+    }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_1D(x1,N,n),
+		 DATA_TYPE POLYBENCH_1D(x2,N,n))
+
+{
+  int i;
+
+  for (i = 0; i < n; i++) {
+    fprintf (stderr, DATA_PRINTF_MODIFIER, x1[i]);
+    fprintf (stderr, DATA_PRINTF_MODIFIER, x2[i]);
+    if (i % 20 == 0) fprintf (stderr, "\n");
+  }
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_mvt(int n,
+		DATA_TYPE POLYBENCH_1D(x1,N,n),
+		DATA_TYPE POLYBENCH_1D(x2,N,n),
+		DATA_TYPE POLYBENCH_1D(y_1,N,n),
+		DATA_TYPE POLYBENCH_1D(y_2,N,n),
+		DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+{
+  int i, j;
+
+#pragma scop
+  for (i = 0; i < _PB_N; i++)
+    for (j = 0; j < _PB_N; j++)
+      x1[i] = x1[i] + A[i][j] * y_1[j];
+  for (i = 0; i < _PB_N; i++)
+    for (j = 0; j < _PB_N; j++)
+      x2[i] = x2[i] + A[j][i] * y_2[j];
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
+  POLYBENCH_1D_ARRAY_DECL(x1, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(x2, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(y_1, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(y_2, DATA_TYPE, N, n);
+
+
+  /* Initialize array(s). */
+  init_array (n,
+	      POLYBENCH_ARRAY(x1),
+	      POLYBENCH_ARRAY(x2),
+	      POLYBENCH_ARRAY(y_1),
+	      POLYBENCH_ARRAY(y_2),
+	      POLYBENCH_ARRAY(A));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_mvt (n,
+	      POLYBENCH_ARRAY(x1),
+	      POLYBENCH_ARRAY(x2),
+	      POLYBENCH_ARRAY(y_1),
+	      POLYBENCH_ARRAY(y_2),
+	      POLYBENCH_ARRAY(A));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(x1), POLYBENCH_ARRAY(x2)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(x1);
+  POLYBENCH_FREE_ARRAY(x2);
+  POLYBENCH_FREE_ARRAY(y_1);
+  POLYBENCH_FREE_ARRAY(y_2);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,48 @@
+/**
+ * mvt.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef MVT_H
+# define MVT_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# ifndef N
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 4000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 8000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 100000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !MVT */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+6b091f2008985d45dbdcf6c382fbd7b8

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/mvt/mvt.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = symm
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,136 @@
+/**
+ * symm.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "symm.h"
+
+
+/* Array initialization. */
+static
+void init_array(int ni, int nj,
+		DATA_TYPE *alpha,
+		DATA_TYPE *beta,
+		DATA_TYPE POLYBENCH_2D(C,NI,NJ,ni,nj),
+		DATA_TYPE POLYBENCH_2D(A,NJ,NJ,nj,nj),
+		DATA_TYPE POLYBENCH_2D(B,NI,NJ,ni,nj))
+{
+  int i, j;
+
+  *alpha = 32412;
+  *beta = 2123;
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nj; j++) {
+      C[i][j] = ((DATA_TYPE) i*j) / ni;
+      B[i][j] = ((DATA_TYPE) i*j) / ni;
+    }
+  for (i = 0; i < nj; i++)
+    for (j = 0; j < nj; j++)
+      A[i][j] = ((DATA_TYPE) i*j) / ni;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int ni, int nj,
+		 DATA_TYPE POLYBENCH_2D(C,NI,NJ,ni,nj))
+{
+  int i, j;
+
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nj; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, C[i][j]);
+	if ((i * ni + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_symm(int ni, int nj,
+		 DATA_TYPE alpha,
+		 DATA_TYPE beta,
+		 DATA_TYPE POLYBENCH_2D(C,NI,NJ,ni,nj),
+		 DATA_TYPE POLYBENCH_2D(A,NJ,NJ,nj,nj),
+		 DATA_TYPE POLYBENCH_2D(B,NI,NJ,ni,nj))
+{
+  int i, j, k;
+  DATA_TYPE acc;
+
+#pragma scop
+  /*  C := alpha*A*B + beta*C, A is symetric */
+  for (i = 0; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NJ; j++)
+      {
+	acc = 0;
+	for (k = 0; k < j - 1; k++)
+	  {
+	    C[k][j] += alpha * A[k][i] * B[i][j];
+	    acc += B[k][j] * A[k][i];
+	  }
+	C[i][j] = beta * C[i][j] + alpha * A[i][i] * B[i][j] + alpha * acc;
+      }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int ni = NI;
+  int nj = NJ;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE alpha;
+  DATA_TYPE beta;
+  POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,NI,NJ,ni,nj);
+  POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NJ,NJ,nj,nj);
+  POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NI,NJ,ni,nj);
+
+  /* Initialize array(s). */
+  init_array (ni, nj, &alpha, &beta,
+	      POLYBENCH_ARRAY(C),
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(B));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_symm (ni, nj,
+	       alpha, beta,
+	       POLYBENCH_ARRAY(C),
+	       POLYBENCH_ARRAY(A),
+	       POLYBENCH_ARRAY(B));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(ni, nj,  POLYBENCH_ARRAY(C)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(C);
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(B);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * symm.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef SYMM_H
+# define SYMM_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NI) && !defined(NJ)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NI 32
+#   define NJ 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NI 128
+#   define NJ 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NI 1024
+#   define NJ 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NI 2000
+#   define NJ 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NI 4000
+#   define NJ 4000
+#  endif
+# endif /* !N */
+
+# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni)
+# define _PB_NJ POLYBENCH_LOOP_BOUND(NJ,nj)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !SYMM */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+a3ec0a2360baf0348b8ee4ba64fbf096

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/symm/symm.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = syr2k
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,134 @@
+/**
+ * syr2k.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "syr2k.h"
+
+
+/* Array initialization. */
+static
+void init_array(int ni, int nj,
+		DATA_TYPE *alpha,
+		DATA_TYPE *beta,
+		DATA_TYPE POLYBENCH_2D(C,NI,NI,ni,ni),
+		DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj),
+		DATA_TYPE POLYBENCH_2D(B,NI,NJ,ni,nj))
+{
+  int i, j;
+
+  *alpha = 32412;
+  *beta = 2123;
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nj; j++) {
+      A[i][j] = ((DATA_TYPE) i*j) / ni;
+      B[i][j] = ((DATA_TYPE) i*j) / ni;
+    }
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < ni; j++)
+      C[i][j] = ((DATA_TYPE) i*j) / ni;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int ni,
+		 DATA_TYPE POLYBENCH_2D(C,NI,NI,ni,ni))
+{
+  int i, j;
+
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < ni; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, C[i][j]);
+	if ((i * ni + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_syr2k(int ni, int nj,
+		  DATA_TYPE alpha,
+		  DATA_TYPE beta,
+		  DATA_TYPE POLYBENCH_2D(C,NI,NI,ni,ni),
+		  DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj),
+		  DATA_TYPE POLYBENCH_2D(B,NI,NJ,ni,nj))
+{
+  int i, j, k;
+
+#pragma scop
+  /*    C := alpha*A*B' + alpha*B*A' + beta*C */
+  for (i = 0; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NI; j++)
+      C[i][j] *= beta;
+  for (i = 0; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NI; j++)
+      for (k = 0; k < _PB_NJ; k++)
+	{
+	  C[i][j] += alpha * A[i][k] * B[j][k];
+	  C[i][j] += alpha * B[i][k] * A[j][k];
+	}
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int ni = NI;
+  int nj = NJ;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE alpha;
+  DATA_TYPE beta;
+  POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,NI,NI,ni,ni);
+  POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NJ,ni,nj);
+  POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NI,NJ,ni,nj);
+
+  /* Initialize array(s). */
+  init_array (ni, nj, &alpha, &beta,
+	      POLYBENCH_ARRAY(C),
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(B));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_syr2k (ni, nj,
+		alpha, beta,
+		POLYBENCH_ARRAY(C),
+		POLYBENCH_ARRAY(A),
+		POLYBENCH_ARRAY(B));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(ni, POLYBENCH_ARRAY(C)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(C);
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(B);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * syr2k.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef SYR2K_H
+# define SYR2K_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NI) && !defined(NJ)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NI 32
+#   define NJ 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NI 128
+#   define NJ 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NI 1024
+#   define NJ 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NI 2000
+#   define NJ 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NI 4000
+#   define NJ 4000
+#  endif
+# endif /* !N */
+
+# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni)
+# define _PB_NJ POLYBENCH_LOOP_BOUND(NJ,nj)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !SYR2K */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+00e3df1371e3f5b9576862a0f36ef565

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syr2k/syr2k.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = syrk
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,118 @@
+/**
+ * syrk.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "syrk.h"
+
+
+/* Array initialization. */
+static
+void init_array(int ni, int nj,
+		DATA_TYPE *alpha,
+		DATA_TYPE *beta,
+		DATA_TYPE POLYBENCH_2D(C,NI,NI,ni,ni),
+		DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj))
+{
+  int i, j;
+
+  *alpha = 32412;
+  *beta = 2123;
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nj; j++)
+      A[i][j] = ((DATA_TYPE) i*j) / ni;
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < ni; j++)
+      C[i][j] = ((DATA_TYPE) i*j) / ni;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int ni,
+		 DATA_TYPE POLYBENCH_2D(C,NI,NI,ni,ni))
+{
+  int i, j;
+
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < ni; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, C[i][j]);
+	if ((i * ni + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_syrk(int ni, int nj,
+		 DATA_TYPE alpha,
+		 DATA_TYPE beta,
+		 DATA_TYPE POLYBENCH_2D(C,NI,NI,ni,ni),
+		 DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj))
+{
+  int i, j, k;
+
+#pragma scop
+  /*  C := alpha*A*A' + beta*C */
+  for (i = 0; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NI; j++)
+      C[i][j] *= beta;
+  for (i = 0; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NI; j++)
+      for (k = 0; k < _PB_NJ; k++)
+	  C[i][j] += alpha * A[i][k] * A[j][k];
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int ni = NI;
+  int nj = NJ;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE alpha;
+  DATA_TYPE beta;
+  POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,NI,NI,ni,ni);
+  POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NJ,ni,nj);
+
+  /* Initialize array(s). */
+  init_array (ni, nj, &alpha, &beta, POLYBENCH_ARRAY(C), POLYBENCH_ARRAY(A));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_syrk (ni, nj, alpha, beta, POLYBENCH_ARRAY(C), POLYBENCH_ARRAY(A));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(ni, POLYBENCH_ARRAY(C)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(C);
+  POLYBENCH_FREE_ARRAY(A);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * syrk.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef SYRK_H
+# define SYRK_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NI) && !defined(NJ)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NI 32
+#   define NJ 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NI 128
+#   define NJ 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NI 1024
+#   define NJ 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NI 2000
+#   define NJ 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NI 4000
+#   define NJ 4000
+#  endif
+# endif /* !N */
+
+# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni)
+# define _PB_NJ POLYBENCH_LOOP_BOUND(NJ,nj)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !SYRK */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+8e49771874c426a32c3cf2f1f3aa0385

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/syrk/syrk.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = trisolv
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,123 @@
+/**
+ * trisolv.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "trisolv.h"
+
+
+/* Array initialization. */
+static
+void init_array(int n,
+		DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+		DATA_TYPE POLYBENCH_1D(x,N,n),
+		DATA_TYPE POLYBENCH_1D(c,N,n))
+{
+  int i, j;
+  /*
+  LLVM: This change ensures we do not calculate nan values, which are
+        formatted differently on different platforms and which may also
+        be optimized unexpectedly.
+  Original code:
+  for (i = 0; i < n; i++)
+    {
+      c[i] = x[i] = ((DATA_TYPE) i) / n;
+      for (j = 0; j < n; j++)
+	      A[i][j] = ((DATA_TYPE) i*j) / n;
+    }
+  */
+  for (i = 0; i < n; i++)
+    {
+      c[i] = x[i] = ((DATA_TYPE) i+n) / n;
+      for (j = 0; j < n; j++)
+      	A[i][j] = ((DATA_TYPE) i*j+n) / n;
+    }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_1D(x,N,n))
+
+{
+  int i;
+
+  for (i = 0; i < n; i++) {
+    fprintf (stderr, DATA_PRINTF_MODIFIER, x[i]);
+    if (i % 20 == 0) fprintf (stderr, "\n");
+  }
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_trisolv(int n,
+		    DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+		    DATA_TYPE POLYBENCH_1D(x,N,n),
+		    DATA_TYPE POLYBENCH_1D(c,N,n))
+{
+  int i, j;
+
+#pragma scop
+  for (i = 0; i < _PB_N; i++)
+    {
+      x[i] = c[i];
+      for (j = 0; j <= i - 1; j++)
+        x[i] = x[i] - A[i][j] * x[j];
+      x[i] = x[i] / A[i][i];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
+  POLYBENCH_1D_ARRAY_DECL(x, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(c, DATA_TYPE, N, n);
+
+
+  /* Initialize array(s). */
+  init_array (n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(x), POLYBENCH_ARRAY(c));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_trisolv (n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(x), POLYBENCH_ARRAY(c));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(x)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(x);
+  POLYBENCH_FREE_ARRAY(c);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,48 @@
+/**
+ * trisolv.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef TRISOLV_H
+# define TRISOLV_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# ifndef N
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 4000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 8000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 100000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !TRISOLV */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+41151c37936a7c5c0ed56884b86b6270

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trisolv/trisolv.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = trmm
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,109 @@
+/**
+ * trmm.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "trmm.h"
+
+
+/* Array initialization. */
+static
+void init_array(int ni,
+		DATA_TYPE *alpha,
+		DATA_TYPE POLYBENCH_2D(A,NI,NI,ni,ni),
+		DATA_TYPE POLYBENCH_2D(B,NI,NI,ni,ni))
+{
+  int i, j;
+
+  *alpha = 32412;
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < ni; j++) {
+      A[i][j] = ((DATA_TYPE) i*j) / ni;
+      B[i][j] = ((DATA_TYPE) i*j) / ni;
+    }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int ni,
+		 DATA_TYPE POLYBENCH_2D(B,NI,NI,ni,ni))
+{
+  int i, j;
+
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < ni; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, B[i][j]);
+	if ((i * ni + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_trmm(int ni,
+		 DATA_TYPE alpha,
+		 DATA_TYPE POLYBENCH_2D(A,NI,NI,ni,ni),
+		 DATA_TYPE POLYBENCH_2D(B,NI,NI,ni,ni))
+{
+  int i, j, k;
+
+#pragma scop
+  /*  B := alpha*A'*B, A triangular */
+  for (i = 1; i < _PB_NI; i++)
+    for (j = 0; j < _PB_NI; j++)
+      for (k = 0; k < i; k++)
+        B[i][j] += alpha * A[i][k] * B[j][k];
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int ni = NI;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE alpha;
+  POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NI,ni,ni);
+  POLYBENCH_2D_ARRAY_DECL(B,DATA_TYPE,NI,NI,ni,ni);
+
+  /* Initialize array(s). */
+  init_array (ni, &alpha, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_trmm (ni, alpha, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(ni, POLYBENCH_ARRAY(B)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(B);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,48 @@
+/**
+ * trmm.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef TRMM_H
+# define TRMM_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NI)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NI 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NI 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NI 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NI 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NI 4000
+#  endif
+# endif /* !N */
+
+# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !TRMM */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+fd1579a9f0ec5c2585fdc77df8e870cc

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/kernels/trmm/trmm.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,13 @@
+# SingleSource/Polybench/linear-algebra
+# Makefile:  Build all subdirectories automatically
+
+LEVEL = ../../../../..
+PARALLEL_DIRS = durbin dynprog gramschmidt lu
+
+# LLVM: We removed the benchmark ludcmp. This change ensures we do not
+# calculate nan values, which are formatted differently on different platforms
+# and which may also be optimized unexpectedly.
+
+include $(LEVEL)/Makefile.config
+include $(LEVEL)/Makefile.programs
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = durbin
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,147 @@
+/**
+ * durbin.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 4000. */
+#include "durbin.h"
+
+
+/* Array initialization. */
+static
+void init_array (int n,
+		 DATA_TYPE POLYBENCH_2D(y,N,N,n,n),
+		 DATA_TYPE POLYBENCH_2D(sum,N,N,n,n),
+		 DATA_TYPE POLYBENCH_1D(alpha,N,n),
+		 DATA_TYPE POLYBENCH_1D(beta,N,n),
+		 DATA_TYPE POLYBENCH_1D(r,N,n))
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    {
+      alpha[i] = i;
+      beta[i] = (i+1)/n/2.0;
+      r[i] = (i+1)/n/4.0;
+      for (j = 0; j < n; j++) {
+	y[i][j] = ((DATA_TYPE) i*j) / n;
+	sum[i][j] = ((DATA_TYPE) i*j) / n;
+      }
+    }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_1D(out,N,n))
+
+{
+  int i;
+
+  for (i = 0; i < n; i++) {
+    fprintf (stderr, DATA_PRINTF_MODIFIER, out[i]);
+    if (i % 20 == 0) fprintf (stderr, "\n");
+  }
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_durbin(int n,
+		   DATA_TYPE POLYBENCH_2D(y,N,N,n,n),
+		   DATA_TYPE POLYBENCH_2D(sum,N,N,n,n),
+		   DATA_TYPE POLYBENCH_1D(alpha,N,n),
+		   DATA_TYPE POLYBENCH_1D(beta,N,n),
+		   DATA_TYPE POLYBENCH_1D(r,N,n),
+		   DATA_TYPE POLYBENCH_1D(out,N,n))
+{
+  int i, k;
+
+#pragma scop
+  y[0][0] = r[0];
+  beta[0] = 1;
+  alpha[0] = r[0];
+  for (k = 1; k < _PB_N; k++)
+    {
+      beta[k] = beta[k-1] - alpha[k-1] * alpha[k-1] * beta[k-1];
+      sum[0][k] = r[k];
+      for (i = 0; i <= k - 1; i++)
+	sum[i+1][k] = sum[i][k] + r[k-i-1] * y[i][k-1];
+      alpha[k] = -sum[k][k] * beta[k];
+      for (i = 0; i <= k-1; i++)
+	y[i][k] = y[i][k-1] + alpha[k] * y[k-i-1][k-1];
+      y[k][k] = alpha[k];
+    }
+  for (i = 0; i < _PB_N; i++)
+    out[i] = y[i][_PB_N-1];
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(y, DATA_TYPE, N, N, n, n);
+  POLYBENCH_2D_ARRAY_DECL(sum, DATA_TYPE, N, N, n, n);
+  POLYBENCH_1D_ARRAY_DECL(alpha, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(beta, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(r, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(out, DATA_TYPE, N, n);
+
+
+  /* Initialize array(s). */
+  init_array (n,
+	      POLYBENCH_ARRAY(y),
+	      POLYBENCH_ARRAY(sum),
+	      POLYBENCH_ARRAY(alpha),
+	      POLYBENCH_ARRAY(beta),
+	      POLYBENCH_ARRAY(r));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_durbin (n,
+		 POLYBENCH_ARRAY(y),
+		 POLYBENCH_ARRAY(sum),
+		 POLYBENCH_ARRAY(alpha),
+		 POLYBENCH_ARRAY(beta),
+		 POLYBENCH_ARRAY(r),
+		 POLYBENCH_ARRAY(out));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(out)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(y);
+  POLYBENCH_FREE_ARRAY(sum);
+  POLYBENCH_FREE_ARRAY(alpha);
+  POLYBENCH_FREE_ARRAY(beta);
+  POLYBENCH_FREE_ARRAY(r);
+  POLYBENCH_FREE_ARRAY(out);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,48 @@
+/**
+ * durbin.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef DURBIN_H
+# define DURBIN_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# ifndef N
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 4000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 8000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 100000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !DURBIN */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+5a60e01ba29a050bf6526ed97989884f

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/durbin/durbin.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = dynprog
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,123 @@
+/**
+ * dynprog.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is int, default size is 50. */
+#include "dynprog.h"
+
+
+/* Array initialization. */
+static
+void init_array(int length,
+		DATA_TYPE POLYBENCH_2D(c,LENGTH,LENGTH,length,length),
+		DATA_TYPE POLYBENCH_2D(W,LENGTH,LENGTH,length,length))
+{
+  int i, j;
+  for (i = 0; i < length; i++)
+    for (j = 0; j < length; j++) {
+      c[i][j] = i*j % 2;
+      W[i][j] = ((DATA_TYPE) i-j) / length;
+    }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(DATA_TYPE out)
+{
+  fprintf (stderr, DATA_PRINTF_MODIFIER, out);
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_dynprog(int tsteps, int length,
+		    DATA_TYPE POLYBENCH_2D(c,LENGTH,LENGTH,length,length),
+		    DATA_TYPE POLYBENCH_2D(W,LENGTH,LENGTH,length,length),
+		    DATA_TYPE POLYBENCH_3D(sum_c,LENGTH,LENGTH,LENGTH,length,length,length),
+		    DATA_TYPE *out)
+{
+  int iter, i, j, k;
+
+  DATA_TYPE out_l = 0;
+
+#pragma scop
+  for (iter = 0; iter < _PB_TSTEPS; iter++)
+    {
+      for (i = 0; i <= _PB_LENGTH - 1; i++)
+	for (j = 0; j <= _PB_LENGTH - 1; j++)
+	  c[i][j] = 0;
+
+      for (i = 0; i <= _PB_LENGTH - 2; i++)
+	{
+	  for (j = i + 1; j <= _PB_LENGTH - 1; j++)
+	    {
+	      sum_c[i][j][i] = 0;
+	      for (k = i + 1; k <= j-1; k++)
+		sum_c[i][j][k] = sum_c[i][j][k - 1] + c[i][k] + c[k][j];
+	      c[i][j] = sum_c[i][j][j-1] + W[i][j];
+	    }
+	}
+      out_l += c[0][_PB_LENGTH - 1];
+    }
+#pragma endscop
+
+  *out = out_l;
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int length = LENGTH;
+  int tsteps = TSTEPS;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE out;
+  POLYBENCH_3D_ARRAY_DECL(sum_c,DATA_TYPE,LENGTH,LENGTH,LENGTH,length,length,length);
+  POLYBENCH_2D_ARRAY_DECL(c,DATA_TYPE,LENGTH,LENGTH,length,length);
+  POLYBENCH_2D_ARRAY_DECL(W,DATA_TYPE,LENGTH,LENGTH,length,length);
+
+  /* Initialize array(s). */
+  init_array (length, POLYBENCH_ARRAY(c), POLYBENCH_ARRAY(W));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_dynprog (tsteps, length,
+		  POLYBENCH_ARRAY(c),
+		  POLYBENCH_ARRAY(W),
+		  POLYBENCH_ARRAY(sum_c),
+		  &out);
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(out));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(sum_c);
+  POLYBENCH_FREE_ARRAY(c);
+  POLYBENCH_FREE_ARRAY(W);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * dynprog.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef DYNPROG_H
+# define DYNPROG_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(TSTEPS) && !defined(LENGTH)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define TSTEPS 10
+#   define LENGTH 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define TSTEPS 100
+#   define LENGTH 50
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define TSTEPS 10000
+#   define LENGTH 50
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define TSTEPS 1000
+#   define LENGTH 500
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define TSTEPS 10000
+#   define LENGTH 500
+#  endif
+# endif /* !N */
+
+# define _PB_TSTEPS POLYBENCH_LOOP_BOUND(TSTEPS,tsteps)
+# define _PB_LENGTH POLYBENCH_LOOP_BOUND(LENGTH,length)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE int
+#  define DATA_PRINTF_MODIFIER "%d "
+# endif
+
+
+#endif /* !DYNPROG */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+3266e7ad50094462f6638a86d596e029

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/dynprog/dynprog.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = gramschmidt
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,160 @@
+/**
+ * gramschmidt.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 512. */
+#include "gramschmidt.h"
+
+
+/* Array initialization. */
+static
+void init_array(int ni, int nj,
+		DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj),
+		DATA_TYPE POLYBENCH_2D(R,NJ,NJ,nj,nj),
+		DATA_TYPE POLYBENCH_2D(Q,NI,NJ,ni,nj))
+{
+  int i, j;
+  /*
+  LLVM: This change ensures we do not calculate nan values, which are
+        formatted differently on different platforms and which may also
+        be optimized unexpectedly.
+  Original code:
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nj; j++) {
+      A[i][j] = ((DATA_TYPE) i*j) / ni;
+      Q[i][j] = ((DATA_TYPE) i*(j+1)) / nj;
+    }
+  for (i = 0; i < nj; i++)
+    for (j = 0; j < nj; j++)
+      R[i][j] = ((DATA_TYPE) i*(j+2)) / nj;
+  */
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nj; j++) {
+      A[i][j] = ((DATA_TYPE) i*j+ni) / ni;
+      Q[i][j] = ((DATA_TYPE) i*(j+1)+nj) / nj;
+    }
+  for (i = 0; i < nj; i++)
+    for (j = 0; j < nj; j++)
+      R[i][j] = ((DATA_TYPE) i*(j+2)+nj) / nj;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int ni, int nj,
+		 DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj),
+		 DATA_TYPE POLYBENCH_2D(R,NJ,NJ,nj,nj),
+		 DATA_TYPE POLYBENCH_2D(Q,NI,NJ,ni,nj))
+{
+  int i, j;
+
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nj; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, A[i][j]);
+	if (i % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+  for (i = 0; i < nj; i++)
+    for (j = 0; j < nj; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, R[i][j]);
+	if (i % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+  for (i = 0; i < ni; i++)
+    for (j = 0; j < nj; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, Q[i][j]);
+	if (i % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_gramschmidt(int ni, int nj,
+			DATA_TYPE POLYBENCH_2D(A,NI,NJ,ni,nj),
+			DATA_TYPE POLYBENCH_2D(R,NJ,NJ,nj,nj),
+			DATA_TYPE POLYBENCH_2D(Q,NI,NJ,ni,nj))
+{
+  int i, j, k;
+
+  DATA_TYPE nrm;
+
+#pragma scop
+  for (k = 0; k < _PB_NJ; k++)
+    {
+      nrm = 0;
+      for (i = 0; i < _PB_NI; i++)
+        nrm += A[i][k] * A[i][k];
+      R[k][k] = sqrt(nrm);
+      for (i = 0; i < _PB_NI; i++)
+        Q[i][k] = A[i][k] / R[k][k];
+      for (j = k + 1; j < _PB_NJ; j++)
+	{
+	  R[k][j] = 0;
+	  for (i = 0; i < _PB_NI; i++)
+	    R[k][j] += Q[i][k] * A[i][j];
+	  for (i = 0; i < _PB_NI; i++)
+	    A[i][j] = A[i][j] - Q[i][k] * R[k][j];
+	}
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int ni = NI;
+  int nj = NJ;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(A,DATA_TYPE,NI,NJ,ni,nj);
+  POLYBENCH_2D_ARRAY_DECL(R,DATA_TYPE,NJ,NJ,nj,nj);
+  POLYBENCH_2D_ARRAY_DECL(Q,DATA_TYPE,NI,NJ,ni,nj);
+
+  /* Initialize array(s). */
+  init_array (ni, nj,
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(R),
+	      POLYBENCH_ARRAY(Q));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_gramschmidt (ni, nj,
+		      POLYBENCH_ARRAY(A),
+		      POLYBENCH_ARRAY(R),
+		      POLYBENCH_ARRAY(Q));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(ni, nj, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(R), POLYBENCH_ARRAY(Q)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(R);
+  POLYBENCH_FREE_ARRAY(Q);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * gramschmidt.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef GRAMSCHMIDT_H
+# define GRAMSCHMIDT_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NI) && !defined(NJ)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NI 32
+#   define NJ 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NI 128
+#   define NJ 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NI 512
+#   define NJ 512
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NI 2000
+#   define NJ 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NI 4000
+#   define NJ 4000
+#  endif
+# endif /* !N */
+
+# define _PB_NI POLYBENCH_LOOP_BOUND(NI,ni)
+# define _PB_NJ POLYBENCH_LOOP_BOUND(NJ,nj)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !GRAMSCHMIDT */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+afd6148086976ac742f6e23d958a9abd

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/gramschmidt/gramschmidt.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = lu
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,112 @@
+/**
+ * lu.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 1024. */
+#include "lu.h"
+
+
+/* Array initialization. */
+static
+void init_array (int n,
+		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++)
+      A[i][j] = ((DATA_TYPE) (i+1)*(j+1)) / n;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++) {
+      fprintf (stderr, DATA_PRINTF_MODIFIER, A[i][j]);
+      if ((i * n + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_lu(int n,
+	       DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+{
+  int i, j, k;
+
+#pragma scop
+  for (k = 0; k < _PB_N; k++)
+    {
+      for (j = k + 1; j < _PB_N; j++)
+	A[k][j] = A[k][j] / A[k][k];
+      for(i = k + 1; i < _PB_N; i++)
+  /*
+  LLVM: This change ensures we do not calculate nan values, which are
+        formatted differently on different platforms and which may also
+        be optimized unexpectedly.
+  Original code:
+  	for (j = k + 1; j < _PB_N; j++)
+  	  A[i][j] = A[i][j] - A[i][k] * A[k][j];
+  */
+	for (j = k + 1; j < _PB_N; j++)
+	  A[i][j] = A[i][j] + A[i][k] * A[k][j];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
+
+
+  /* Initialize array(s). */
+  init_array (n, POLYBENCH_ARRAY(A));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_lu (n, POLYBENCH_ARRAY(A));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,56 @@
+/**
+ * lu.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef LU_H
+# define LU_H
+
+/*
+  LLVM: Use SMALL_DATASET instead of STANDARD_DATASET.
+        This change ensures we do not calculate nan values, which are
+        formatted differently on different platforms and which may also
+        be optimized unexpectedly.
+*/
+#   define N 128
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# ifndef N
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 4000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !LU */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+e755501e720addec3df7e4a44b31982c

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/lu/lu.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = ludcmp
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,156 @@
+/**
+ * ludcmp.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 1024. */
+#include "ludcmp.h"
+
+
+/* Array initialization. */
+static
+void init_array (int n,
+		 DATA_TYPE POLYBENCH_2D(A,N+1,N+1,n+1,n+1),
+		 DATA_TYPE POLYBENCH_1D(b,N+1,n+1),
+		 DATA_TYPE POLYBENCH_1D(x,N+1,n+1),
+		 DATA_TYPE POLYBENCH_1D(y,N+1,n+1))
+{
+  int i, j;
+
+  for (i = 0; i <= n; i++)
+    {
+      x[i] = i + 1;
+      y[i] = (i+1)/n/2.0 + 1;
+      b[i] = (i+1)/n/2.0 + 42;
+      for (j = 0; j <= n; j++) {
+	A[i][j] = ((DATA_TYPE) (i+1)*(j+1)) / n;
+      }
+    }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_1D(x,N+1,n+1))
+
+{
+  int i;
+
+  for (i = 0; i <= n; i++) {
+    fprintf (stderr, DATA_PRINTF_MODIFIER, x[i]);
+    if (i % 20 == 0) fprintf (stderr, "\n");
+  }
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_ludcmp(int n,
+		   DATA_TYPE POLYBENCH_2D(A,N+1,N+1,n+1,n+1),
+		   DATA_TYPE POLYBENCH_1D(b,N+1,n+1),
+		   DATA_TYPE POLYBENCH_1D(x,N+1,n+1),
+		   DATA_TYPE POLYBENCH_1D(y,N+1,n+1))
+{
+  int i, j, k;
+
+  DATA_TYPE w;
+
+#pragma scop
+  b[0] = 1.0;
+  for (i = 0; i < _PB_N; i++)
+    {
+      for (j = i+1; j <= _PB_N; j++)
+        {
+	  w = A[j][i];
+	  for (k = 0; k < i; k++)
+	    w = w- A[j][k] * A[k][i];
+	  A[j][i] = w / A[i][i];
+        }
+      for (j = i+1; j <= _PB_N; j++)
+        {
+	  w = A[i+1][j];
+	  for (k = 0; k <= i; k++)
+	    w = w  - A[i+1][k] * A[k][j];
+	  A[i+1][j] = w;
+        }
+    }
+  y[0] = b[0];
+  for (i = 1; i <= _PB_N; i++)
+    {
+      w = b[i];
+      for (j = 0; j < i; j++)
+	w = w - A[i][j] * y[j];
+      y[i] = w;
+    }
+  x[_PB_N] = y[_PB_N] / A[_PB_N][_PB_N];
+  for (i = 0; i <= _PB_N - 1; i++)
+    {
+      w = y[_PB_N - 1 - (i)];
+      for (j = _PB_N - i; j <= _PB_N; j++)
+	w = w - A[_PB_N - 1 - i][j] * x[j];
+      x[_PB_N - 1 - i] = w / A[_PB_N - 1 - (i)][_PB_N - 1-(i)];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N+1, N+1, n+1, n+1);
+  POLYBENCH_1D_ARRAY_DECL(b, DATA_TYPE, N+1, n+1);
+  POLYBENCH_1D_ARRAY_DECL(x, DATA_TYPE, N+1, n+1);
+  POLYBENCH_1D_ARRAY_DECL(y, DATA_TYPE, N+1, n+1);
+
+
+  /* Initialize array(s). */
+  init_array (n,
+	      POLYBENCH_ARRAY(A),
+	      POLYBENCH_ARRAY(b),
+	      POLYBENCH_ARRAY(x),
+	      POLYBENCH_ARRAY(y));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_ludcmp (n,
+		 POLYBENCH_ARRAY(A),
+		 POLYBENCH_ARRAY(b),
+		 POLYBENCH_ARRAY(x),
+		 POLYBENCH_ARRAY(y));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(x)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(b);
+  POLYBENCH_FREE_ARRAY(x);
+  POLYBENCH_FREE_ARRAY(y);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,48 @@
+/**
+ * ludcmp.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef LUDCMP_H
+# define LUDCMP_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# ifndef N
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 4000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !LUDCMP */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+2d81d0faefc2105d1435216b16a7b8c7

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/linear-algebra/solvers/ludcmp/ludcmp.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,9 @@
+# SingleSource/Polybench/medley
+# Makefile:  Build all subdirectories automatically
+
+LEVEL = ../../../..
+PARALLEL_DIRS = floyd-warshall reg_detect
+
+include $(LEVEL)/Makefile.config
+include $(LEVEL)/Makefile.programs
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = floyd-warshall
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,103 @@
+/**
+ * floyd-warshall.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 1024. */
+#include "floyd-warshall.h"
+
+
+/* Array initialization. */
+static
+void init_array (int n,
+		 DATA_TYPE POLYBENCH_2D(path,N,N,n,n))
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++)
+      path[i][j] = ((DATA_TYPE) (i+1)*(j+1)) / n;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_2D(path,N,N,n,n))
+
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++) {
+      fprintf (stderr, DATA_PRINTF_MODIFIER, path[i][j]);
+      if ((i * n + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_floyd_warshall(int n,
+			   DATA_TYPE POLYBENCH_2D(path,N,N,n,n))
+{
+  int i, j, k;
+
+#pragma scop
+  for (k = 0; k < _PB_N; k++)
+    {
+      for(i = 0; i < _PB_N; i++)
+	for (j = 0; j < _PB_N; j++)
+	  path[i][j] = path[i][j] < path[i][k] + path[k][j] ?
+	    path[i][j] : path[i][k] + path[k][j];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(path, DATA_TYPE, N, N, n, n);
+
+
+  /* Initialize array(s). */
+  init_array (n, POLYBENCH_ARRAY(path));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_floyd_warshall (n, POLYBENCH_ARRAY(path));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(path)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(path);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,48 @@
+/**
+ * floyd-warshall.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef FLOYD_WARSHALL_H
+# define FLOYD_WARSHALL_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# ifndef N
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 4000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !FLOYD_WARSHALL */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+1e06b1215b8234ad7dc8012e6c9ad7ab

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/floyd-warshall/floyd-warshall.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = reg_detect
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,147 @@
+/**
+ * reg_detect.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is int, default size is 50. */
+#include "reg_detect.h"
+
+
+/* Array initialization. */
+static
+void init_array(int maxgrid,
+		DATA_TYPE POLYBENCH_2D(sum_tang,MAXGRID,MAXGRID,maxgrid,maxgrid),
+		DATA_TYPE POLYBENCH_2D(mean,MAXGRID,MAXGRID,maxgrid,maxgrid),
+		DATA_TYPE POLYBENCH_2D(path,MAXGRID,MAXGRID,maxgrid,maxgrid))
+{
+  int i, j;
+
+  for (i = 0; i < maxgrid; i++)
+    for (j = 0; j < maxgrid; j++) {
+      sum_tang[i][j] = (DATA_TYPE)((i+1)*(j+1));
+      mean[i][j] = ((DATA_TYPE) i-j) / maxgrid;
+      path[i][j] = ((DATA_TYPE) i*(j-1)) / maxgrid;
+    }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int maxgrid,
+		 DATA_TYPE POLYBENCH_2D(path,MAXGRID,MAXGRID,maxgrid,maxgrid))
+{
+  int i, j;
+
+  for (i = 0; i < maxgrid; i++)
+    for (j = 0; j < maxgrid; j++) {
+      fprintf (stderr, DATA_PRINTF_MODIFIER, path[i][j]);
+      if ((i * maxgrid + j) % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+/* Source (modified): http://www.cs.uic.edu/~iluican/reg_detect.c */
+static
+void kernel_reg_detect(int niter, int maxgrid, int length,
+		       DATA_TYPE POLYBENCH_2D(sum_tang,MAXGRID,MAXGRID,maxgrid,maxgrid),
+		       DATA_TYPE POLYBENCH_2D(mean,MAXGRID,MAXGRID,maxgrid,maxgrid),
+		       DATA_TYPE POLYBENCH_2D(path,MAXGRID,MAXGRID,maxgrid,maxgrid),
+		       DATA_TYPE POLYBENCH_3D(diff,MAXGRID,MAXGRID,LENGTH,maxgrid,maxgrid,length),
+		       DATA_TYPE POLYBENCH_3D(sum_diff,MAXGRID,MAXGRID,LENGTH,maxgrid,maxgrid,length))
+{
+  int t, i, j, cnt;
+
+#pragma scop
+  for (t = 0; t < _PB_NITER; t++)
+    {
+      for (j = 0; j <= _PB_MAXGRID - 1; j++)
+	for (i = j; i <= _PB_MAXGRID - 1; i++)
+	  for (cnt = 0; cnt <= _PB_LENGTH - 1; cnt++)
+	    diff[j][i][cnt] = sum_tang[j][i];
+
+      for (j = 0; j <= _PB_MAXGRID - 1; j++)
+        {
+	  for (i = j; i <= _PB_MAXGRID - 1; i++)
+            {
+	      sum_diff[j][i][0] = diff[j][i][0];
+	      for (cnt = 1; cnt <= _PB_LENGTH - 1; cnt++)
+		sum_diff[j][i][cnt] = sum_diff[j][i][cnt - 1] + diff[j][i][cnt];
+	      mean[j][i] = sum_diff[j][i][_PB_LENGTH - 1];
+            }
+        }
+
+      for (i = 0; i <= _PB_MAXGRID - 1; i++)
+	path[0][i] = mean[0][i];
+
+      for (j = 1; j <= _PB_MAXGRID - 1; j++)
+	for (i = j; i <= _PB_MAXGRID - 1; i++)
+	  path[j][i] = path[j - 1][i - 1] + mean[j][i];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int niter = NITER;
+  int maxgrid = MAXGRID;
+  int length = LENGTH;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(sum_tang, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid);
+  POLYBENCH_2D_ARRAY_DECL(mean, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid);
+  POLYBENCH_2D_ARRAY_DECL(path, DATA_TYPE, MAXGRID, MAXGRID, maxgrid, maxgrid);
+  POLYBENCH_3D_ARRAY_DECL(diff, DATA_TYPE, MAXGRID, MAXGRID, LENGTH, maxgrid, maxgrid, length);
+  POLYBENCH_3D_ARRAY_DECL(sum_diff, DATA_TYPE, MAXGRID, MAXGRID, LENGTH, maxgrid, maxgrid, length);
+
+  /* Initialize array(s). */
+  init_array (maxgrid,
+	      POLYBENCH_ARRAY(sum_tang),
+	      POLYBENCH_ARRAY(mean),
+	      POLYBENCH_ARRAY(path));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_reg_detect (niter, maxgrid, length,
+		     POLYBENCH_ARRAY(sum_tang),
+		     POLYBENCH_ARRAY(mean),
+		     POLYBENCH_ARRAY(path),
+		     POLYBENCH_ARRAY(diff),
+		     POLYBENCH_ARRAY(sum_diff));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(maxgrid, POLYBENCH_ARRAY(path)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(sum_tang);
+  POLYBENCH_FREE_ARRAY(mean);
+  POLYBENCH_FREE_ARRAY(path);
+  POLYBENCH_FREE_ARRAY(diff);
+  POLYBENCH_FREE_ARRAY(sum_diff);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,60 @@
+/**
+ * reg_detect.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef REG_DETECT_H
+# define REG_DETECT_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NITER) && !defined(LENGTH) && !defined(MAXGRID)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define NITER 10
+#   define LENGTH 32
+#   define MAXGRID 2
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define NITER 100
+#   define LENGTH 50
+#   define MAXGRID 6
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define NITER 10000
+#   define LENGTH 64
+#   define MAXGRID 6
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define NITER 1000
+#   define LENGTH 500
+#   define MAXGRID 12
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define NITER 10000
+#   define LENGTH 500
+#   define MAXGRID 12
+#  endif
+# endif /* !N */
+
+# define _PB_NITER POLYBENCH_LOOP_BOUND(NITER,niter)
+# define _PB_LENGTH POLYBENCH_LOOP_BOUND(LENGTH,length)
+# define _PB_MAXGRID POLYBENCH_LOOP_BOUND(MAXGRID,maxgrid)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE int
+#  define DATA_PRINTF_MODIFIER "%d "
+# endif
+
+
+#endif /* !REG_DETECT */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+eef6cdaf9c1cdebe72d8f267816fad2d

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+# SingleSource/Polybench/stencils
+# Makefile:  Build all subdirectories automatically
+
+LEVEL = ../../../..
+PARALLEL_DIRS = adi fdtd-2d fdtd-apml jacobi-1d-imper \
+		jacobi-2d-imper seidel-2d
+
+include $(LEVEL)/Makefile.config
+include $(LEVEL)/Makefile.programs
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = adi
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,140 @@
+/**
+ * adi.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 10x1024x1024. */
+#include "adi.h"
+
+
+/* Array initialization. */
+static
+void init_array (int n,
+		 DATA_TYPE POLYBENCH_2D(X,N,N,n,n),
+		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+		 DATA_TYPE POLYBENCH_2D(B,N,N,n,n))
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++)
+      {
+	X[i][j] = ((DATA_TYPE) i*(j+1) + 1) / n;
+	A[i][j] = ((DATA_TYPE) i*(j+2) + 2) / n;
+	B[i][j] = ((DATA_TYPE) i*(j+3) + 3) / n;
+      }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_2D(X,N,N,n,n))
+
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++) {
+      fprintf(stderr, DATA_PRINTF_MODIFIER, X[i][j]);
+      if ((i * N + j) % 20 == 0) fprintf(stderr, "\n");
+    }
+  fprintf(stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_adi(int tsteps,
+		int n,
+		DATA_TYPE POLYBENCH_2D(X,N,N,n,n),
+		DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+		DATA_TYPE POLYBENCH_2D(B,N,N,n,n))
+{
+  int t, i1, i2;
+
+#pragma scop
+  for (t = 0; t < _PB_TSTEPS; t++)
+    {
+      for (i1 = 0; i1 < _PB_N; i1++)
+	for (i2 = 1; i2 < _PB_N; i2++)
+	  {
+	    X[i1][i2] = X[i1][i2] - X[i1][i2-1] * A[i1][i2] / B[i1][i2-1];
+	    B[i1][i2] = B[i1][i2] - A[i1][i2] * A[i1][i2] / B[i1][i2-1];
+	  }
+
+      for (i1 = 0; i1 < _PB_N; i1++)
+	X[i1][_PB_N-1] = X[i1][_PB_N-1] / B[i1][_PB_N-1];
+
+      for (i1 = 0; i1 < _PB_N; i1++)
+	for (i2 = 0; i2 < _PB_N-2; i2++)
+	  X[i1][_PB_N-i2-2] = (X[i1][_PB_N-2-i2] - X[i1][_PB_N-2-i2-1] * A[i1][_PB_N-i2-3]) / B[i1][_PB_N-3-i2];
+
+      for (i1 = 1; i1 < _PB_N; i1++)
+	for (i2 = 0; i2 < _PB_N; i2++) {
+	  X[i1][i2] = X[i1][i2] - X[i1-1][i2] * A[i1][i2] / B[i1-1][i2];
+	  B[i1][i2] = B[i1][i2] - A[i1][i2] * A[i1][i2] / B[i1-1][i2];
+	}
+
+      for (i2 = 0; i2 < _PB_N; i2++)
+	X[_PB_N-1][i2] = X[_PB_N-1][i2] / B[_PB_N-1][i2];
+
+      for (i1 = 0; i1 < _PB_N-2; i1++)
+	for (i2 = 0; i2 < _PB_N; i2++)
+	  X[_PB_N-2-i1][i2] = (X[_PB_N-2-i1][i2] - X[_PB_N-i1-3][i2] * A[_PB_N-3-i1][i2]) / B[_PB_N-2-i1][i2];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+  int tsteps = TSTEPS;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(X, DATA_TYPE, N, N, n, n);
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
+  POLYBENCH_2D_ARRAY_DECL(B, DATA_TYPE, N, N, n, n);
+
+
+  /* Initialize array(s). */
+  init_array (n, POLYBENCH_ARRAY(X), POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_adi (tsteps, n, POLYBENCH_ARRAY(X),
+	      POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(X)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(X);
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(B);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * adi.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef ADI_H
+# define ADI_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(TSTEPS) && ! defined(N)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define TSTEPS 2
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define TSTEPS 10
+#   define N 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define TSTEPS 50
+#   define N 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define TSTEPS 50
+#   define N 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define TSTEPS 100
+#   define N 4000
+#  endif
+# endif /* !N */
+
+# define _PB_TSTEPS POLYBENCH_LOOP_BOUND(TSTEPS,tsteps)
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !ADI */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+af131f7f24a4d9666b459cb425f6c6d2

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/adi/adi.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = fdtd-2d
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,150 @@
+/**
+ * fdtd-2d.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 50x1000x1000. */
+#include "fdtd-2d.h"
+
+
+/* Array initialization. */
+static
+void init_array (int tmax,
+		 int nx,
+		 int ny,
+		 DATA_TYPE POLYBENCH_2D(ex,NX,NY,nx,ny),
+		 DATA_TYPE POLYBENCH_2D(ey,NX,NY,nx,ny),
+		 DATA_TYPE POLYBENCH_2D(hz,NX,NY,nx,ny),
+		 DATA_TYPE POLYBENCH_1D(_fict_,TMAX,tmax))
+{
+  int i, j;
+
+  for (i = 0; i < tmax; i++)
+    _fict_[i] = (DATA_TYPE) i;
+  for (i = 0; i < nx; i++)
+    for (j = 0; j < ny; j++)
+      {
+	ex[i][j] = ((DATA_TYPE) i*(j+1)) / nx;
+	ey[i][j] = ((DATA_TYPE) i*(j+2)) / ny;
+	hz[i][j] = ((DATA_TYPE) i*(j+3)) / nx;
+      }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int nx,
+		 int ny,
+		 DATA_TYPE POLYBENCH_2D(ex,NX,NY,nx,ny),
+		 DATA_TYPE POLYBENCH_2D(ey,NX,NY,nx,ny),
+		 DATA_TYPE POLYBENCH_2D(hz,NX,NY,nx,ny))
+{
+  int i, j;
+
+  for (i = 0; i < nx; i++)
+    for (j = 0; j < ny; j++) {
+      fprintf(stderr, DATA_PRINTF_MODIFIER, ex[i][j]);
+      fprintf(stderr, DATA_PRINTF_MODIFIER, ey[i][j]);
+      fprintf(stderr, DATA_PRINTF_MODIFIER, hz[i][j]);
+      if ((i * nx + j) % 20 == 0) fprintf(stderr, "\n");
+    }
+  fprintf(stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_fdtd_2d(int tmax,
+		    int nx,
+		    int ny,
+		    DATA_TYPE POLYBENCH_2D(ex,NX,NY,nx,ny),
+		    DATA_TYPE POLYBENCH_2D(ey,NX,NY,nx,ny),
+		    DATA_TYPE POLYBENCH_2D(hz,NX,NY,nx,ny),
+		    DATA_TYPE POLYBENCH_1D(_fict_,TMAX,tmax))
+{
+  int t, i, j;
+
+#pragma scop
+
+  for(t = 0; t < _PB_TMAX; t++)
+    {
+      for (j = 0; j < _PB_NY; j++)
+	ey[0][j] = _fict_[t];
+      for (i = 1; i < _PB_NX; i++)
+	for (j = 0; j < _PB_NY; j++)
+	  ey[i][j] = ey[i][j] - 0.5*(hz[i][j]-hz[i-1][j]);
+      for (i = 0; i < _PB_NX; i++)
+	for (j = 1; j < _PB_NY; j++)
+	  ex[i][j] = ex[i][j] - 0.5*(hz[i][j]-hz[i][j-1]);
+      for (i = 0; i < _PB_NX - 1; i++)
+	for (j = 0; j < _PB_NY - 1; j++)
+	  hz[i][j] = hz[i][j] - 0.7*  (ex[i][j+1] - ex[i][j] +
+				       ey[i+1][j] - ey[i][j]);
+    }
+
+#pragma endscop
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int tmax = TMAX;
+  int nx = NX;
+  int ny = NY;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(ex,DATA_TYPE,NX,NY,nx,ny);
+  POLYBENCH_2D_ARRAY_DECL(ey,DATA_TYPE,NX,NY,nx,ny);
+  POLYBENCH_2D_ARRAY_DECL(hz,DATA_TYPE,NX,NY,nx,ny);
+  POLYBENCH_1D_ARRAY_DECL(_fict_,DATA_TYPE,TMAX,tmax);
+
+  /* Initialize array(s). */
+  init_array (tmax, nx, ny,
+	      POLYBENCH_ARRAY(ex),
+	      POLYBENCH_ARRAY(ey),
+	      POLYBENCH_ARRAY(hz),
+	      POLYBENCH_ARRAY(_fict_));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_fdtd_2d (tmax, nx, ny,
+		  POLYBENCH_ARRAY(ex),
+		  POLYBENCH_ARRAY(ey),
+		  POLYBENCH_ARRAY(hz),
+		  POLYBENCH_ARRAY(_fict_));
+
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(nx, ny, POLYBENCH_ARRAY(ex),
+				    POLYBENCH_ARRAY(ey),
+				    POLYBENCH_ARRAY(hz)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(ex);
+  POLYBENCH_FREE_ARRAY(ey);
+  POLYBENCH_FREE_ARRAY(hz);
+  POLYBENCH_FREE_ARRAY(_fict_);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,60 @@
+/**
+ * fdtd-2d.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef FDTD_2D_H
+# define FDTD_2D_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(NX) && ! defined(NY) && !defined(TMAX)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define TMAX 2
+#   define NX 32
+#   define NY 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define TMAX 10
+#   define NX 500
+#   define NY 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define TMAX 50
+#   define NX 1000
+#   define NY 1000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define TMAX 50
+#   define NX 2000
+#   define NY 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define TMAX 100
+#   define NX 4000
+#   define NY 4000
+#  endif
+# endif /* !N */
+
+# define _PB_TMAX POLYBENCH_LOOP_BOUND(TMAX,tmax)
+# define _PB_NX POLYBENCH_LOOP_BOUND(NX,nx)
+# define _PB_NY POLYBENCH_LOOP_BOUND(NY,ny)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !FDTD_2D */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+a0c67eb784fcf1b38991d3c7ffe7381b

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-2d/fdtd-2d.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = fdtd-apml
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,256 @@
+/**
+ * fdtd-apml.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 256x256x256. */
+#include "fdtd-apml.h"
+
+
+/* Array initialization. */
+static
+void init_array (int cz,
+		 int cxm,
+		 int cym,
+		 DATA_TYPE *mui,
+		 DATA_TYPE *ch,
+		 DATA_TYPE POLYBENCH_2D(Ax,CZ+1,CYM+1,cz+1,cym+1),
+		 DATA_TYPE POLYBENCH_2D(Ry,CZ+1,CYM+1,cz+1,cym+1),
+		 DATA_TYPE POLYBENCH_3D(Ex,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1),
+		 DATA_TYPE POLYBENCH_3D(Ey,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1),
+		 DATA_TYPE POLYBENCH_3D(Hz,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1),
+		 DATA_TYPE POLYBENCH_1D(czm,CZ+1,cz+1),
+		 DATA_TYPE POLYBENCH_1D(czp,CZ+1,cz+1),
+		 DATA_TYPE POLYBENCH_1D(cxmh,CXM+1,cxm+1),
+		 DATA_TYPE POLYBENCH_1D(cxph,CXM+1,cxm+1),
+		 DATA_TYPE POLYBENCH_1D(cymh,CYM+1,cym+1),
+		 DATA_TYPE POLYBENCH_1D(cyph,CYM+1,cym+1))
+{
+  int i, j, k;
+  *mui = 2341;
+  *ch = 42;
+  for (i = 0; i <= cz; i++)
+    {
+      czm[i] = ((DATA_TYPE) i + 1) / cxm;
+      czp[i] = ((DATA_TYPE) i + 2) / cxm;
+    }
+  for (i = 0; i <= cxm; i++)
+    {
+      cxmh[i] = ((DATA_TYPE) i + 3) / cxm;
+      cxph[i] = ((DATA_TYPE) i + 4) / cxm;
+    }
+  for (i = 0; i <= cym; i++)
+    {
+      cymh[i] = ((DATA_TYPE) i + 5) / cxm;
+      cyph[i] = ((DATA_TYPE) i + 6) / cxm;
+    }
+
+  for (i = 0; i <= cz; i++)
+    for (j = 0; j <= cym; j++)
+      {
+	Ry[i][j] = ((DATA_TYPE) i*(j+1) + 10) / cym;
+	Ax[i][j] = ((DATA_TYPE) i*(j+2) + 11) / cym;
+	for (k = 0; k <= cxm; k++)
+	  {
+	    Ex[i][j][k] = ((DATA_TYPE) i*(j+3) + k + 1) / cxm;
+	    Ey[i][j][k] = ((DATA_TYPE) i*(j+4) + k + 2) / cym;
+	    Hz[i][j][k] = ((DATA_TYPE) i*(j+5) + k + 3) / cz;
+	  }
+      }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int cz,
+		 int cxm,
+		 int cym,
+		 DATA_TYPE POLYBENCH_3D(Bza,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1),
+		 DATA_TYPE POLYBENCH_3D(Ex,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1),
+		 DATA_TYPE POLYBENCH_3D(Ey,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1),
+		 DATA_TYPE POLYBENCH_3D(Hz,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1))
+{
+  int i, j, k;
+
+  for (i = 0; i <= cz; i++)
+    for (j = 0; j <= cym; j++)
+      for (k = 0; k <= cxm; k++) {
+	fprintf(stderr, DATA_PRINTF_MODIFIER, Bza[i][j][k]);
+	fprintf(stderr, DATA_PRINTF_MODIFIER, Ex[i][j][k]);
+	fprintf(stderr, DATA_PRINTF_MODIFIER, Ey[i][j][k]);
+	fprintf(stderr, DATA_PRINTF_MODIFIER, Hz[i][j][k]);
+	if ((i * cxm + j) % 20 == 0) fprintf(stderr, "\n");
+      }
+  fprintf(stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_fdtd_apml(int cz,
+		      int cxm,
+		      int cym,
+		      DATA_TYPE mui,
+		      DATA_TYPE ch,
+		      DATA_TYPE POLYBENCH_2D(Ax,CZ+1,CYM+1,cz+1,cym+1),
+		      DATA_TYPE POLYBENCH_2D(Ry,CZ+1,CYM+1,cz+1,cym+1),
+		      DATA_TYPE POLYBENCH_2D(clf,CYM+1,CXM+1,cym+1,cxm+1),
+		      DATA_TYPE POLYBENCH_2D(tmp,CYM+1,CXM+1,cym+1,cxm+1),
+		      DATA_TYPE POLYBENCH_3D(Bza,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1),
+		      DATA_TYPE POLYBENCH_3D(Ex,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1),
+		      DATA_TYPE POLYBENCH_3D(Ey,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1),
+		      DATA_TYPE POLYBENCH_3D(Hz,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1),
+		      DATA_TYPE POLYBENCH_1D(czm,CZ+1,cz+1),
+		      DATA_TYPE POLYBENCH_1D(czp,CZ+1,cz+1),
+		      DATA_TYPE POLYBENCH_1D(cxmh,CXM+1,cxm+1),
+		      DATA_TYPE POLYBENCH_1D(cxph,CXM+1,cxm+1),
+		      DATA_TYPE POLYBENCH_1D(cymh,CYM+1,cym+1),
+		      DATA_TYPE POLYBENCH_1D(cyph,CYM+1,cym+1))
+{
+  int iz, iy, ix;
+
+#pragma scop
+  for (iz = 0; iz < _PB_CZ; iz++)
+    {
+      for (iy = 0; iy < _PB_CYM; iy++)
+	{
+	  for (ix = 0; ix < _PB_CXM; ix++)
+	    {
+	      clf[iz][iy] = Ex[iz][iy][ix] - Ex[iz][iy+1][ix] + Ey[iz][iy][ix+1] - Ey[iz][iy][ix];
+	      tmp[iz][iy] = (cymh[iy] / cyph[iy]) * Bza[iz][iy][ix] - (ch / cyph[iy]) * clf[iz][iy];
+	      Hz[iz][iy][ix] = (cxmh[ix] /cxph[ix]) * Hz[iz][iy][ix]
+		+ (mui * czp[iz] / cxph[ix]) * tmp[iz][iy]
+		- (mui * czm[iz] / cxph[ix]) * Bza[iz][iy][ix];
+	      Bza[iz][iy][ix] = tmp[iz][iy];
+	    }
+	  clf[iz][iy] = Ex[iz][iy][_PB_CXM] - Ex[iz][iy+1][_PB_CXM] + Ry[iz][iy] - Ey[iz][iy][_PB_CXM];
+	  tmp[iz][iy] = (cymh[iy] / cyph[iy]) * Bza[iz][iy][_PB_CXM] - (ch / cyph[iy]) * clf[iz][iy];
+	  Hz[iz][iy][_PB_CXM]=(cxmh[_PB_CXM] / cxph[_PB_CXM]) * Hz[iz][iy][_PB_CXM]
+	    + (mui * czp[iz] / cxph[_PB_CXM]) * tmp[iz][iy]
+	    - (mui * czm[iz] / cxph[_PB_CXM]) * Bza[iz][iy][_PB_CXM];
+	  Bza[iz][iy][_PB_CXM] = tmp[iz][iy];
+	  for (ix = 0; ix < _PB_CXM; ix++)
+	    {
+	      clf[iz][iy] = Ex[iz][_PB_CYM][ix] - Ax[iz][ix] + Ey[iz][_PB_CYM][ix+1] - Ey[iz][_PB_CYM][ix];
+	      tmp[iz][iy] = (cymh[_PB_CYM] / cyph[iy]) * Bza[iz][iy][ix] - (ch / cyph[iy]) * clf[iz][iy];
+	      Hz[iz][_PB_CYM][ix] = (cxmh[ix] / cxph[ix]) * Hz[iz][_PB_CYM][ix]
+		+ (mui * czp[iz] / cxph[ix]) * tmp[iz][iy]
+		- (mui * czm[iz] / cxph[ix]) * Bza[iz][_PB_CYM][ix];
+	      Bza[iz][_PB_CYM][ix] = tmp[iz][iy];
+	    }
+	  clf[iz][iy] = Ex[iz][_PB_CYM][_PB_CXM] - Ax[iz][_PB_CXM] + Ry[iz][_PB_CYM] - Ey[iz][_PB_CYM][_PB_CXM];
+	  tmp[iz][iy] = (cymh[_PB_CYM] / cyph[_PB_CYM]) * Bza[iz][_PB_CYM][_PB_CXM] - (ch / cyph[_PB_CYM]) * clf[iz][iy];
+	  Hz[iz][_PB_CYM][_PB_CXM] = (cxmh[_PB_CXM] / cxph[_PB_CXM]) * Hz[iz][_PB_CYM][_PB_CXM]
+	    + (mui * czp[iz] / cxph[_PB_CXM]) * tmp[iz][iy]
+	    - (mui * czm[iz] / cxph[_PB_CXM]) * Bza[iz][_PB_CYM][_PB_CXM];
+	  Bza[iz][_PB_CYM][_PB_CXM] = tmp[iz][iy];
+	}
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int cz = CZ;
+  int cym = CYM;
+  int cxm = CXM;
+
+  /* Variable declaration/allocation. */
+  DATA_TYPE mui;
+  DATA_TYPE ch;
+  POLYBENCH_2D_ARRAY_DECL(Ax,DATA_TYPE,CZ+1,CYM+1,cz+1,cym+1);
+  POLYBENCH_2D_ARRAY_DECL(Ry,DATA_TYPE,CZ+1,CYM+1,cz+1,cym+1);
+  POLYBENCH_2D_ARRAY_DECL(clf,DATA_TYPE,CYM+1,CXM+1,cym+1,cxm+1);
+  POLYBENCH_2D_ARRAY_DECL(tmp,DATA_TYPE,CYM+1,CXM+1,cym+1,cxm+1);
+  POLYBENCH_3D_ARRAY_DECL(Bza,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
+  POLYBENCH_3D_ARRAY_DECL(Ex,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
+  POLYBENCH_3D_ARRAY_DECL(Ey,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
+  POLYBENCH_3D_ARRAY_DECL(Hz,DATA_TYPE,CZ+1,CYM+1,CXM+1,cz+1,cym+1,cxm+1);
+  POLYBENCH_1D_ARRAY_DECL(czm,DATA_TYPE,CZ+1,cz+1);
+  POLYBENCH_1D_ARRAY_DECL(czp,DATA_TYPE,CZ+1,cz+1);
+  POLYBENCH_1D_ARRAY_DECL(cxmh,DATA_TYPE,CXM+1,cxm+1);
+  POLYBENCH_1D_ARRAY_DECL(cxph,DATA_TYPE,CXM+1,cxm+1);
+  POLYBENCH_1D_ARRAY_DECL(cymh,DATA_TYPE,CYM+1,cym+1);
+  POLYBENCH_1D_ARRAY_DECL(cyph,DATA_TYPE,CYM+1,cym+1);
+
+  /* Initialize array(s). */
+  init_array (cz, cxm, cym, &mui, &ch,
+  	      POLYBENCH_ARRAY(Ax),
+  	      POLYBENCH_ARRAY(Ry),
+  	      POLYBENCH_ARRAY(Ex),
+  	      POLYBENCH_ARRAY(Ey),
+  	      POLYBENCH_ARRAY(Hz),
+  	      POLYBENCH_ARRAY(czm),
+  	      POLYBENCH_ARRAY(czp),
+  	      POLYBENCH_ARRAY(cxmh),
+  	      POLYBENCH_ARRAY(cxph),
+  	      POLYBENCH_ARRAY(cymh),
+  	      POLYBENCH_ARRAY(cyph));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_fdtd_apml (cz, cxm, cym, mui, ch,
+  		    POLYBENCH_ARRAY(Ax),
+  		    POLYBENCH_ARRAY(Ry),
+  		    POLYBENCH_ARRAY(clf),
+  		    POLYBENCH_ARRAY(tmp),
+  		    POLYBENCH_ARRAY(Bza),
+  		    POLYBENCH_ARRAY(Ex),
+  		    POLYBENCH_ARRAY(Ey),
+  		    POLYBENCH_ARRAY(Hz),
+  		    POLYBENCH_ARRAY(czm),
+  		    POLYBENCH_ARRAY(czp),
+  		    POLYBENCH_ARRAY(cxmh),
+  		    POLYBENCH_ARRAY(cxph),
+  		    POLYBENCH_ARRAY(cymh),
+  		    POLYBENCH_ARRAY(cyph));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(cz, cxm, cym,
+  				    POLYBENCH_ARRAY(Bza),
+  				    POLYBENCH_ARRAY(Ex),
+  				    POLYBENCH_ARRAY(Ey),
+  				    POLYBENCH_ARRAY(Hz)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(Ax);
+  POLYBENCH_FREE_ARRAY(Ry);
+  POLYBENCH_FREE_ARRAY(clf);
+  POLYBENCH_FREE_ARRAY(tmp);
+  POLYBENCH_FREE_ARRAY(Bza);
+  POLYBENCH_FREE_ARRAY(Ex);
+  POLYBENCH_FREE_ARRAY(Ey);
+  POLYBENCH_FREE_ARRAY(Hz);
+  POLYBENCH_FREE_ARRAY(czm);
+  POLYBENCH_FREE_ARRAY(czp);
+  POLYBENCH_FREE_ARRAY(cxmh);
+  POLYBENCH_FREE_ARRAY(cxph);
+  POLYBENCH_FREE_ARRAY(cymh);
+  POLYBENCH_FREE_ARRAY(cyph);
+
+  return 0;
+}
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,71 @@
+/**
+ * fdtd-apml.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef FDTD_APML_H
+# define FDTD_AMPL_H
+
+/*
+  LLVM:  We are using SMALL_DATASET here because the size of the output file
+         for a STANDARD_DATASET is too big to be used in the LLVM test suite.
+         Even using hashed output, the test suite aborts the execution of this
+         benchmark if we use STANDARD_DATASET.
+*/
+#define CZ  64
+#define CYM 64
+#define CXM 64
+
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(CZ) && ! defined(CYM) && !defined(CXM)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define CZ 32
+#   define CYM 32
+#   define CXM 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define CZ 64
+#   define CYM 64
+#   define CXM 64
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define CZ 256
+#   define CYM 256
+#   define CXM 256
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define CZ 512
+#   define CYM 512
+#   define CXM 512
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define CZ 1000
+#   define CYM 1000
+#   define CXM 1000
+#  endif
+# endif /* !N */
+
+# define _PB_CZ POLYBENCH_LOOP_BOUND(CZ,cz)
+# define _PB_CYM POLYBENCH_LOOP_BOUND(CYM,cym)
+# define _PB_CXM POLYBENCH_LOOP_BOUND(CXM,cxm)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !FDTD_APML */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+2106d674b5073dd2209dc6d1e2131fa6

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/fdtd-apml/fdtd-apml.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = jacobi-1d-imper
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,111 @@
+/**
+ * jacobi-1d-imper.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 100x10000. */
+#include "jacobi-1d-imper.h"
+
+
+/* Array initialization. */
+static
+void init_array (int n,
+		 DATA_TYPE POLYBENCH_1D(A,N,n),
+		 DATA_TYPE POLYBENCH_1D(B,N,n))
+{
+  int i;
+
+  for (i = 0; i < n; i++)
+      {
+	A[i] = ((DATA_TYPE) i+ 2) / n;
+	B[i] = ((DATA_TYPE) i+ 3) / n;
+      }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_1D(A,N,n))
+
+{
+  int i;
+
+  for (i = 0; i < n; i++)
+    {
+      fprintf(stderr, DATA_PRINTF_MODIFIER, A[i]);
+      if (i % 20 == 0) fprintf(stderr, "\n");
+    }
+  fprintf(stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_jacobi_1d_imper(int tsteps,
+			    int n,
+			    DATA_TYPE POLYBENCH_1D(A,N,n),
+			    DATA_TYPE POLYBENCH_1D(B,N,n))
+{
+  int t, i, j;
+
+#pragma scop
+  for (t = 0; t < _PB_TSTEPS; t++)
+    {
+      for (i = 1; i < _PB_N - 1; i++)
+	B[i] = 0.33333 * (A[i-1] + A[i] + A[i + 1]);
+      for (j = 1; j < _PB_N - 1; j++)
+	A[j] = B[j];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+  int tsteps = TSTEPS;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_1D_ARRAY_DECL(A, DATA_TYPE, N, n);
+  POLYBENCH_1D_ARRAY_DECL(B, DATA_TYPE, N, n);
+
+
+  /* Initialize array(s). */
+  init_array (n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_jacobi_1d_imper (tsteps, n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(B);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * jacobi-1d-imper.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef JACOBI_1D_IMPER_H
+# define JACOBI_1D_IMPER_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(TSTEPS) && ! defined(N)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define TSTEPS 2
+#   define N 500
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define TSTEPS 10
+#   define N 1000
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define TSTEPS 100
+#   define N 10000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define TSTEPS 1000
+#   define N 100000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define TSTEPS 1000
+#   define N 1000000
+#  endif
+# endif /* !N */
+
+# define _PB_TSTEPS POLYBENCH_LOOP_BOUND(TSTEPS,tsteps)
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !JACOBI_1D_IMPER */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+2eddb1dbda3879a4038397cfc8bf9a61

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-1d-imper/jacobi-1d-imper.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = jacobi-2d-imper
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,114 @@
+/**
+ * jacobi-2d-imper.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 20x1000. */
+#include "jacobi-2d-imper.h"
+
+
+/* Array initialization. */
+static
+void init_array (int n,
+		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+		 DATA_TYPE POLYBENCH_2D(B,N,N,n,n))
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++)
+      {
+	A[i][j] = ((DATA_TYPE) i*(j+2) + 2) / n;
+	B[i][j] = ((DATA_TYPE) i*(j+3) + 3) / n;
+      }
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++) {
+      fprintf(stderr, DATA_PRINTF_MODIFIER, A[i][j]);
+      if ((i * n + j) % 20 == 0) fprintf(stderr, "\n");
+    }
+  fprintf(stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_jacobi_2d_imper(int tsteps,
+			    int n,
+			    DATA_TYPE POLYBENCH_2D(A,N,N,n,n),
+			    DATA_TYPE POLYBENCH_2D(B,N,N,n,n))
+{
+  int t, i, j;
+
+#pragma scop
+  for (t = 0; t < _PB_TSTEPS; t++)
+    {
+      for (i = 1; i < _PB_N - 1; i++)
+	for (j = 1; j < _PB_N - 1; j++)
+	  B[i][j] = 0.2 * (A[i][j] + A[i][j-1] + A[i][1+j] + A[1+i][j] + A[i-1][j]);
+      for (i = 1; i < _PB_N-1; i++)
+	for (j = 1; j < _PB_N-1; j++)
+	  A[i][j] = B[i][j];
+    }
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+  int tsteps = TSTEPS;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
+  POLYBENCH_2D_ARRAY_DECL(B, DATA_TYPE, N, N, n, n);
+
+
+  /* Initialize array(s). */
+  init_array (n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_jacobi_2d_imper (tsteps, n, POLYBENCH_ARRAY(A), POLYBENCH_ARRAY(B));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+  POLYBENCH_FREE_ARRAY(B);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * jacobi-2d-imper.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef JACOBI_2D_IMPER_H
+# define JACOBI_2D_IMPER_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(TSTEPS) && ! defined(N)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define TSTEPS 2
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define TSTEPS 10
+#   define N 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define TSTEPS 20
+#   define N 1000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define TSTEPS 20
+#   define N 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define TSTEPS 100
+#   define N 4000
+#  endif
+# endif /* !N */
+
+# define _PB_TSTEPS POLYBENCH_LOOP_BOUND(TSTEPS,tsteps)
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !JACOBI_2D_IMPER */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+61690122698707dc06d0f72e055fe42f

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/jacobi-2d-imper/jacobi-2d-imper.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/Makefile?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/Makefile (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/Makefile Mon Jul  2 14:27:28 2012
@@ -0,0 +1,10 @@
+LEVEL = ../../../../..
+
+POLYBENCH_UTILS = SingleSource/Benchmarks/Polybench/utilities 
+PROG          = seidel-2d
+CFLAGS        += -I $(PROJ_SRC_ROOT)/$(POLYBENCH_UTILS) -DPOLYBENCH_DUMP_ARRAYS
+
+HASH_PROGRAM_OUTPUT = 1
+
+include $(LEVEL)/SingleSource/Makefile.singlesrc
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/Makefile
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,104 @@
+/**
+ * seidel-2d.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is 20x1000. */
+#include "seidel-2d.h"
+
+
+/* Array initialization. */
+static
+void init_array (int n,
+		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++)
+      A[i][j] = ((DATA_TYPE) i*(j+2) + 2) / n;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n,
+		 DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++) {
+      fprintf(stderr, DATA_PRINTF_MODIFIER, A[i][j]);
+      if ((i * n + j) % 20 == 0) fprintf(stderr, "\n");
+    }
+  fprintf(stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_seidel_2d(int tsteps,
+		      int n,
+		      DATA_TYPE POLYBENCH_2D(A,N,N,n,n))
+{
+  int t, i, j;
+
+#pragma scop
+  for (t = 0; t <= _PB_TSTEPS - 1; t++)
+    for (i = 1; i<= _PB_N - 2; i++)
+      for (j = 1; j <= _PB_N - 2; j++)
+	A[i][j] = (A[i-1][j-1] + A[i-1][j] + A[i-1][j+1]
+		   + A[i][j-1] + A[i][j] + A[i][j+1]
+		   + A[i+1][j-1] + A[i+1][j] + A[i+1][j+1])/9.0;
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+  int tsteps = TSTEPS;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(A, DATA_TYPE, N, N, n, n);
+
+
+  /* Initialize array(s). */
+  init_array (n, POLYBENCH_ARRAY(A));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_seidel_2d (tsteps, n, POLYBENCH_ARRAY(A));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n, POLYBENCH_ARRAY(A)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(A);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,54 @@
+/**
+ * seidel-2d.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef SEIDEL_2D_H
+# define SEIDEL_2D_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(TSTEPS) && ! defined(N)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define TSTEPS 2
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define TSTEPS 10
+#   define N 500
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define TSTEPS 20
+#   define N 1000
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define TSTEPS 20
+#   define N 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define TSTEPS 100
+#   define N 4000
+#  endif
+# endif /* !N */
+
+# define _PB_TSTEPS POLYBENCH_LOOP_BOUND(TSTEPS,tsteps)
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !SEIDEL_2D */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.reference_output
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.reference_output?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.reference_output (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.reference_output Mon Jul  2 14:27:28 2012
@@ -0,0 +1 @@
+73eaf8ec02cd5ecce448f83e00f93d1f

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/stencils/seidel-2d/seidel-2d.reference_output
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/benchmark_list
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/benchmark_list?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/benchmark_list (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/benchmark_list Mon Jul  2 14:27:28 2012
@@ -0,0 +1,30 @@
+./datamining/correlation/correlation.c
+./datamining/covariance/covariance.c
+./linear-algebra/kernels/2mm/2mm.c
+./linear-algebra/kernels/3mm/3mm.c
+./linear-algebra/kernels/atax/atax.c
+./linear-algebra/kernels/bicg/bicg.c
+./linear-algebra/kernels/cholesky/cholesky.c
+./linear-algebra/kernels/doitgen/doitgen.c
+./linear-algebra/kernels/gemm/gemm.c
+./linear-algebra/kernels/gemver/gemver.c
+./linear-algebra/kernels/gesummv/gesummv.c
+./linear-algebra/kernels/mvt/mvt.c
+./linear-algebra/kernels/symm/symm.c
+./linear-algebra/kernels/syr2k/syr2k.c
+./linear-algebra/kernels/syrk/syrk.c
+./linear-algebra/kernels/trisolv/trisolv.c
+./linear-algebra/kernels/trmm/trmm.c
+./linear-algebra/solvers/durbin/durbin.c
+./linear-algebra/solvers/dynprog/dynprog.c
+./linear-algebra/solvers/gramschmidt/gramschmidt.c
+./linear-algebra/solvers/lu/lu.c
+./linear-algebra/solvers/ludcmp/ludcmp.c
+./medley/floyd-warshall/floyd-warshall.c
+./medley/reg_detect/reg_detect.c
+./stencils/adi/adi.c
+./stencils/fdtd-2d/fdtd-2d.c
+./stencils/fdtd-apml/fdtd-apml.c
+./stencils/jacobi-1d-imper/jacobi-1d-imper.c
+./stencils/jacobi-2d-imper/jacobi-2d-imper.c
+./stencils/seidel-2d/seidel-2d.c

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/benchmark_list
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/create_cpped_version.sh
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/create_cpped_version.sh?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/create_cpped_version.sh (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/create_cpped_version.sh Mon Jul  2 14:27:28 2012
@@ -0,0 +1,28 @@
+#!/bin/sh
+## create_cpped_version.sh for  in /Users/pouchet
+##
+## Made by Louis-Noel Pouchet
+## Contact: <pouchet at cse.ohio-state.edu>
+##
+## Started on  Mon Oct 31 16:20:01 2011 Louis-Noel Pouchet
+## Last update Mon Oct 31 20:42:35 2011 Louis-Noel Pouchet
+##
+
+if [ $# -lt 1 ]; then
+    echo "Usage: create_cpped_version.sh <file.c> [gcc -E flags]";
+    exit 1;
+fi;
+args="$2";
+file="$1";
+head -n 12 $file > .__poly_top.c;
+tail -n +12 $file > .__poly_bottom.c;
+filename=`echo "$file" | sed -e "s/\(.*\).c/\1/1"`;
+filenameorig=`basename $file`;
+benchdir=`dirname "$file"`;
+gcc -E .__poly_bottom.c -I $benchdir $args 2>/dev/null > .__tmp_poly.c
+sed -e "/^[ ]*;[ ]*$/d" .__tmp_poly.c | sed -e "s~.__poly_bottom.c~$filenameorig~g" > .__poly_bottom.c;
+cat .__poly_top.c > $filename.preproc.c;
+echo "#include <polybench.h>\n" >> $filename.preproc.c;
+cat .__poly_bottom.c >> $filename.preproc.c;
+rm -f .__tmp_poly.c .__poly_bottom.c .__poly_top.c;
+

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/create_cpped_version.sh
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/papi_counters.list
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/papi_counters.list?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/papi_counters.list (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/papi_counters.list Mon Jul  2 14:27:28 2012
@@ -0,0 +1,5 @@
+// Counters must be delimited with ',' including the last one.
+// C/C++ comments are allowed.
+// Both native and standard PAPI events are supported.
+"PAPI_TOT_CYC",
+"L1D:REPL",

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/papi_counters.list
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,402 @@
+/**
+ * polybench.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <assert.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sched.h>
+#include <math.h>
+#ifdef _OPENMP
+# include <omp.h>
+#endif
+
+/* By default, collect PAPI counters on thread 0. */
+#ifndef POLYBENCH_THREAD_MONITOR
+# define POLYBENCH_THREAD_MONITOR 0
+#endif
+
+/* Total LLC cache size. By default 32+MB.. */
+#ifndef POLYBENCH_CACHE_SIZE_KB
+# define POLYBENCH_CACHE_SIZE_KB 32770
+#endif
+
+
+int polybench_papi_counters_threadid = POLYBENCH_THREAD_MONITOR;
+double polybench_program_total_flops = 0;
+
+#ifdef POLYBENCH_PAPI
+# include <papi.h>
+# define POLYBENCH_MAX_NB_PAPI_COUNTERS 96
+  char* _polybench_papi_eventlist[] = {
+#include "papi_counters.list"
+    NULL
+  };
+  int polybench_papi_eventset;
+  int polybench_papi_eventlist[POLYBENCH_MAX_NB_PAPI_COUNTERS];
+  long_long polybench_papi_values[POLYBENCH_MAX_NB_PAPI_COUNTERS];
+
+#endif
+
+
+/* Timer code (gettimeofday). */
+double polybench_t_start, polybench_t_end;
+/* Timer code (RDTSC). */
+unsigned long long int polybench_c_start, polybench_c_end;
+
+static
+double rtclock()
+{
+#ifdef POLYBENCH_TIME
+    struct timeval Tp;
+    int stat;
+    stat = gettimeofday (&Tp, NULL);
+    if (stat != 0)
+      printf ("Error return from gettimeofday: %d", stat);
+    return (Tp.tv_sec + Tp.tv_usec * 1.0e-6);
+#else
+    return 0;
+#endif
+}
+
+
+#ifdef POLYBENCH_CYCLE_ACCURATE_TIMER
+static
+unsigned long long int rdtsc()
+{
+  unsigned long long int ret = 0;
+  unsigned int cycles_lo;
+  unsigned int cycles_hi;
+  __asm__ volatile ("RDTSC" : "=a" (cycles_lo), "=d" (cycles_hi));
+  ret = (unsigned long long int)cycles_hi << 32 | cycles_lo;
+
+  return ret;
+}
+#endif
+
+void polybench_flush_cache()
+{
+  int cs = POLYBENCH_CACHE_SIZE_KB * 1024 / sizeof(double);
+  double* flush = (double*) calloc (cs, sizeof(double));
+  int i;
+  double tmp = 0.0;
+#ifdef _OPENMP
+#pragma omp parallel for
+#endif
+  for (i = 0; i < cs; i++)
+    tmp += flush[i];
+  assert (tmp <= 10.0);
+  free (flush);
+}
+
+
+#ifdef POLYBENCH_LINUX_FIFO_SCHEDULER
+void polybench_linux_fifo_scheduler()
+{
+  /* Use FIFO scheduler to limit OS interference. Program must be run
+     as root, and this works only for Linux kernels. */
+  struct sched_param schedParam;
+  schedParam.sched_priority = sched_get_priority_max (SCHED_FIFO);
+  sched_setscheduler (0, SCHED_FIFO, &schedParam);
+}
+
+
+void polybench_linux_standard_scheduler()
+{
+  /* Restore to standard scheduler policy. */
+  struct sched_param schedParam;
+  schedParam.sched_priority = sched_get_priority_max (SCHED_OTHER);
+  sched_setscheduler (0, SCHED_OTHER, &schedParam);
+}
+#endif
+
+#ifdef POLYBENCH_PAPI
+
+static
+void test_fail(char *file, int line, char *call, int retval)
+{
+  char buf[128];
+
+  memset(buf, '\0', sizeof(buf));
+  if (retval != 0)
+    fprintf (stdout,"%-40s FAILED\nLine # %d\n", file, line);
+  else
+    {
+      fprintf (stdout,"%-40s SKIPPED\n", file);
+      fprintf (stdout,"Line # %d\n", line);
+    }
+  if (retval == PAPI_ESYS)
+    {
+      sprintf (buf, "System error in %s", call);
+      perror (buf);
+    }
+  else if (retval > 0)
+    fprintf (stdout,"Error: %s\n", call);
+  else if (retval == 0)
+    fprintf (stdout,"Error: %s\n", call);
+  else
+    {
+      char errstring[PAPI_MAX_STR_LEN];
+      PAPI_perror (retval, errstring, PAPI_MAX_STR_LEN);
+      fprintf (stdout,"Error in %s: %s\n", call, errstring);
+    }
+  fprintf (stdout,"\n");
+  if (PAPI_is_initialized ())
+    PAPI_shutdown ();
+  exit (1);
+}
+
+
+void polybench_papi_init()
+{
+# ifdef _OPENMP
+#pragma omp parallel
+  {
+#pragma omp master
+    {
+      if (omp_get_max_threads () < polybench_papi_counters_threadid)
+	polybench_papi_counters_threadid = omp_get_max_threads () - 1;
+    }
+#pragma omp barrier
+
+    if (omp_get_thread_num () == polybench_papi_counters_threadid)
+      {
+# endif
+	int retval;
+	polybench_papi_eventset = PAPI_NULL;
+	if ((retval = PAPI_library_init (PAPI_VER_CURRENT)) != PAPI_VER_CURRENT)
+	  test_fail (__FILE__, __LINE__, "PAPI_library_init", retval);
+	if ((retval = PAPI_create_eventset (&polybench_papi_eventset))
+	    != PAPI_OK)
+	  test_fail (__FILE__, __LINE__, "PAPI_create_eventset", retval);
+	int k;
+	for (k = 0; _polybench_papi_eventlist[k]; ++k)
+	  {
+	    if ((retval =
+		 PAPI_event_name_to_code (_polybench_papi_eventlist[k],
+					  &(polybench_papi_eventlist[k])))
+		!= PAPI_OK)
+	      test_fail (__FILE__, __LINE__, "PAPI_event_name_to_code", retval);
+	  }
+	polybench_papi_eventlist[k] = 0;
+
+
+# ifdef _OPENMP
+      }
+  }
+#pragma omp barrier
+# endif
+}
+
+
+void polybench_papi_close()
+{
+# ifdef _OPENMP
+#pragma omp parallel
+  {
+    if (omp_get_thread_num () == polybench_papi_counters_threadid)
+      {
+# endif
+	int retval;
+	if ((retval = PAPI_destroy_eventset (&polybench_papi_eventset))
+	    != PAPI_OK)
+	  test_fail (__FILE__, __LINE__, "PAPI_destroy_eventset", retval);
+	if (PAPI_is_initialized ())
+	  PAPI_shutdown ();
+# ifdef _OPENMP
+      }
+  }
+#pragma omp barrier
+# endif
+}
+
+int polybench_papi_start_counter(int evid)
+{
+# ifndef POLYBENCH_NO_FLUSH_CACHE
+    polybench_flush_cache();
+# endif
+
+# ifdef _OPENMP
+# pragma omp parallel
+  {
+    if (omp_get_thread_num () == polybench_papi_counters_threadid)
+      {
+# endif
+
+	int retval = 1;
+	char descr[PAPI_MAX_STR_LEN];
+	PAPI_event_info_t evinfo;
+	PAPI_event_code_to_name (polybench_papi_eventlist[evid], descr);
+	if (PAPI_add_event (polybench_papi_eventset,
+			    polybench_papi_eventlist[evid]) != PAPI_OK)
+	  test_fail (__FILE__, __LINE__, "PAPI_add_event", 1);
+	if (PAPI_get_event_info (polybench_papi_eventlist[evid], &evinfo)
+	    != PAPI_OK)
+	  test_fail (__FILE__, __LINE__, "PAPI_get_event_info", retval);
+	if ((retval = PAPI_start (polybench_papi_eventset)) != PAPI_OK)
+	  test_fail (__FILE__, __LINE__, "PAPI_start", retval);
+# ifdef _OPENMP
+      }
+  }
+#pragma omp barrier
+# endif
+  return 0;
+}
+
+
+void polybench_papi_stop_counter(int evid)
+{
+# ifdef _OPENMP
+# pragma omp parallel
+  {
+    if (omp_get_thread_num () == polybench_papi_counters_threadid)
+      {
+# endif
+	int retval;
+	long_long values[1];
+	values[0] = 0;
+	if ((retval = PAPI_read (polybench_papi_eventset, &values[0]))
+	    != PAPI_OK)
+	  test_fail (__FILE__, __LINE__, "PAPI_read", retval);
+
+	if ((retval = PAPI_stop (polybench_papi_eventset, NULL)) != PAPI_OK)
+	  test_fail (__FILE__, __LINE__, "PAPI_stop", retval);
+
+	polybench_papi_values[evid] = values[0];
+
+	if ((retval = PAPI_remove_event
+	     (polybench_papi_eventset,
+	      polybench_papi_eventlist[evid])) != PAPI_OK)
+	  test_fail (__FILE__, __LINE__, "PAPI_remove_event", retval);
+# ifdef _OPENMP
+      }
+  }
+#pragma omp barrier
+# endif
+}
+
+
+void polybench_papi_print()
+{
+  int verbose = 0;
+# ifdef _OPENMP
+# pragma omp parallel
+  {
+    if (omp_get_thread_num() == polybench_papi_counters_threadid)
+      {
+#ifdef POLYBENCH_PAPI_VERBOSE
+	verbose = 1;
+#endif
+	if (verbose)
+	  printf ("On thread %d:\n", polybench_papi_counters_threadid);
+#endif
+	int evid;
+	for (evid = 0; polybench_papi_eventlist[evid] != 0; ++evid)
+	  {
+	    if (verbose)
+	      printf ("%s=", _polybench_papi_eventlist[evid]);
+	    printf ("%llu ", polybench_papi_values[evid]);
+	    if (verbose)
+	      printf ("\n");
+	  }
+	printf ("\n");
+# ifdef _OPENMP
+      }
+  }
+#pragma omp barrier
+# endif
+}
+
+#endif
+/* ! POLYBENCH_PAPI */
+
+void polybench_prepare_instruments()
+{
+#ifndef POLYBENCH_NO_FLUSH_CACHE
+  polybench_flush_cache ();
+#endif
+#ifdef POLYBENCH_LINUX_FIFO_SCHEDULER
+  polybench_linux_fifo_scheduler ();
+#endif
+}
+
+
+void polybench_timer_start()
+{
+  polybench_prepare_instruments ();
+#ifndef POLYBENCH_CYCLE_ACCURATE_TIMER
+  polybench_t_start = rtclock ();
+#else
+  polybench_c_start = rdtsc ();
+#endif
+}
+
+
+void polybench_timer_stop()
+{
+#ifndef POLYBENCH_CYCLE_ACCURATE_TIMER
+  polybench_t_end = rtclock ();
+#else
+  polybench_c_end = rdtsc ();
+#endif
+#ifdef POLYBENCH_LINUX_FIFO_SCHEDULER
+  polybench_linux_standard_scheduler ();
+#endif
+}
+
+
+void polybench_timer_print()
+{
+#ifdef POLYBENCH_GFLOPS
+      if  (__polybench_program_total_flops == 0)
+	{
+	  printf ("[PolyBench][WARNING] Program flops not defined, use polybench_set_program_flops(value)\n");
+	  printf ("%0.6lf\n", polybench_t_end - polybench_t_start);
+	}
+      else
+	printf ("%0.2lf\n",
+		(__polybench_program_total_flops /
+		 (double)(polybench_t_end - polybench_t_start)) / 1000000000);
+#else
+# ifndef POLYBENCH_CYCLE_ACCURATE_TIMER
+      printf ("%0.6f\n", polybench_t_end - polybench_t_start);
+# else
+      printf ("%Ld\n", polybench_c_end - polybench_c_start);
+# endif
+#endif
+}
+
+
+
+static
+void *
+xmalloc (size_t num)
+{
+  void* new = NULL;
+  int ret = posix_memalign (&new, 32, num);
+  if (! new || ret)
+    {
+      fprintf (stderr, "[PolyBench] posix_memalign: cannot allocate memory");
+      exit (1);
+    }
+  return new;
+}
+
+
+void* polybench_alloc_data(unsigned long long int n, int elt_size)
+{
+  /// FIXME: detect overflow!
+  size_t val = n;
+  val *= elt_size;
+  void* ret = xmalloc (val);
+
+  return ret;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,611 @@
+/**
+ * polybench.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+/*
+ * Polybench header for instrumentation.
+ *
+ * Programs must be compiled with `-I utilities utilities/polybench.c'
+ *
+ * Optionally, one can define:
+ *
+ * -DPOLYBENCH_TIME, to report the execution time,
+ *   OR (exclusive):
+ * -DPOLYBENCH_PAPI, to use PAPI H/W counters (defined in polybench.c)
+ *
+ *
+ * See README or utilities/polybench.c for additional options.
+ *
+ */
+#ifndef POLYBENCH_H
+# define POLYBENCH_H
+
+# include <stdlib.h>
+
+/* Array padding. By default, none is used. */
+# ifndef POLYBENCH_PADDING_FACTOR
+/* default: */
+#  define POLYBENCH_PADDING_FACTOR 0
+# endif
+
+
+/* C99 arrays in function prototype. By default, do not use. */
+# ifdef POLYBENCH_USE_C99_PROTO
+#  define POLYBENCH_C99_SELECT(x,y) y
+# else
+/* default: */
+#  define POLYBENCH_C99_SELECT(x,y) x
+# endif
+
+
+/* Scalar loop bounds in SCoPs. By default, use parametric loop bounds. */
+# ifdef POLYBENCH_USE_SCALAR_LB
+#  define POLYBENCH_LOOP_BOUND(x,y) x
+# else
+/* default: */
+#  define POLYBENCH_LOOP_BOUND(x,y) y
+# endif
+
+
+/* Macros to reference an array. Generic for heap and stack arrays
+   (C99).  Each array dimensionality has his own macro, to be used at
+   declaration or as a function argument.
+   Example:
+   int b[x] => POLYBENCH_1D_ARRAY(b, x)
+   int A[N][N] => POLYBENCH_2D_ARRAY(A, N, N)
+*/
+# ifndef POLYBENCH_STACK_ARRAYS
+#  define POLYBENCH_ARRAY(x) *x
+#  define POLYBENCH_FREE_ARRAY(x) free((void*)x);
+#  define POLYBENCH_DECL_VAR(x) (*x)
+# else
+#  define POLYBENCH_ARRAY(x) x
+#  define POLYBENCH_FREE_ARRAY(x)
+#  define POLYBENCH_DECL_VAR(x) x
+# endif
+/* Macros for using arrays in the function prototypes. */
+# define POLYBENCH_1D(var, dim1,ddim1) var[POLYBENCH_C99_SELECT(dim1,ddim1) + POLYBENCH_PADDING_FACTOR]
+# define POLYBENCH_2D(var, dim1, dim2, ddim1, ddim2) var[POLYBENCH_C99_SELECT(dim1,ddim1) + POLYBENCH_PADDING_FACTOR][POLYBENCH_C99_SELECT(dim2,ddim2) + POLYBENCH_PADDING_FACTOR]
+# define POLYBENCH_3D(var, dim1, dim2, dim3, ddim1, ddim2, ddim3) var[POLYBENCH_C99_SELECT(dim1,ddim1) + POLYBENCH_PADDING_FACTOR][POLYBENCH_C99_SELECT(dim2,ddim2) + POLYBENCH_PADDING_FACTOR][POLYBENCH_C99_SELECT(dim3,ddim3) + POLYBENCH_PADDING_FACTOR]
+# define POLYBENCH_4D(var, dim1, dim2, dim3, dim4, ddim1, ddim2, ddim3, ddim4) var[POLYBENCH_C99_SELECT(dim1,ddim1) + POLYBENCH_PADDING_FACTOR][POLYBENCH_C99_SELECT(dim2,ddim2) + POLYBENCH_PADDING_FACTOR][POLYBENCH_C99_SELECT(dim3,ddim3) + POLYBENCH_PADDING_FACTOR][POLYBENCH_C99_SELECT(dim4,ddim4) + POLYBENCH_PADDING_FACTOR]
+# define POLYBENCH_5D(var, dim1, dim2, dim3, dim4, dim5, ddim1, ddim2, ddim3, ddim4, ddim5) var[POLYBENCH_C99_SELECT(dim1,ddim1) + POLYBENCH_PADDING_FACTOR][POLYBENCH_C99_SELECT(dim2,ddim2) + POLYBENCH_PADDING_FACTOR][POLYBENCH_C99_SELECT(dim3,ddim3) + POLYBENCH_PADDING_FACTOR][POLYBENCH_C99_SELECT(dim4,ddim4) + POLYBENCH_PADDING_FACTOR][POLYBENCH_C99_SELECT(dim5,ddim5) + POLYBENCH_PADDING_FACTOR]
+
+
+/* Macros to allocate heap arrays.
+   Example:
+   polybench_alloc_2d_array(N, M, double) => allocates N x M x sizeof(double)
+					  and returns a pointer to the 2d array
+ */
+# define POLYBENCH_ALLOC_1D_ARRAY(n1, type)	\
+  (type(*)[n1 + POLYBENCH_PADDING_FACTOR])polybench_alloc_data (n1 + POLYBENCH_PADDING_FACTOR, sizeof(type))
+# define POLYBENCH_ALLOC_2D_ARRAY(n1, n2, type)		\
+  (type(*)[n1 + POLYBENCH_PADDING_FACTOR][n2 + POLYBENCH_PADDING_FACTOR])polybench_alloc_data ((n1 + POLYBENCH_PADDING_FACTOR) * (n2 + POLYBENCH_PADDING_FACTOR), sizeof(type))
+# define POLYBENCH_ALLOC_3D_ARRAY(n1, n2, n3, type)		\
+  (type(*)[n1 + POLYBENCH_PADDING_FACTOR][n2 + POLYBENCH_PADDING_FACTOR][n3 + POLYBENCH_PADDING_FACTOR])polybench_alloc_data ((n1 + POLYBENCH_PADDING_FACTOR) * (n2 + POLYBENCH_PADDING_FACTOR) * (n3 + POLYBENCH_PADDING_FACTOR), sizeof(type))
+# define POLYBENCH_ALLOC_4D_ARRAY(n1, n2, n3, n4, type)			\
+  (type(*)[n1 + POLYBENCH_PADDING_FACTOR][n2 + POLYBENCH_PADDING_FACTOR][n3 + POLYBENCH_PADDING_FACTOR][n4 + POLYBENCH_PADDING_FACTOR])polybench_alloc_data ((n1 + POLYBENCH_PADDING_FACTOR) * (n2 + POLYBENCH_PADDING_FACTOR) * (n3 + POLYBENCH_PADDING_FACTOR) * (n4 + POLYBENCH_PADDING_FACTOR), sizeof(type))
+# define POLYBENCH_ALLOC_5D_ARRAY(n1, n2, n3, n4, n5, type)		\
+  (type(*)[n1 + POLYBENCH_PADDING_FACTOR][n2 + POLYBENCH_PADDING_FACTOR][n3 + POLYBENCH_PADDING_FACTOR][n4 + POLYBENCH_PADDING_FACTOR][n5 + POLYBENCH_PADDING_FACTOR])polybench_alloc_data ((n1 + POLYBENCH_PADDING_FACTOR) * (n2 + POLYBENCH_PADDING_FACTOR) * (n3 + POLYBENCH_PADDING_FACTOR) * (n4 + POLYBENCH_PADDING_FACTOR) * (n5 + POLYBENCH_PADDING_FACTOR), sizeof(type))
+
+/* Macros for array declaration. */
+# ifndef POLYBENCH_STACK_ARRAYS
+#  define POLYBENCH_1D_ARRAY_DECL(var, type, dim1, ddim1)		\
+  type POLYBENCH_1D(POLYBENCH_DECL_VAR(var), dim1, ddim1); \
+  var = POLYBENCH_ALLOC_1D_ARRAY(POLYBENCH_C99_SELECT(dim1, ddim1), type);
+#  define POLYBENCH_2D_ARRAY_DECL(var, type, dim1, dim2, ddim1, ddim2)	\
+  type POLYBENCH_2D(POLYBENCH_DECL_VAR(var), dim1, dim2, ddim1, ddim2); \
+  var = POLYBENCH_ALLOC_2D_ARRAY(POLYBENCH_C99_SELECT(dim1, ddim1), POLYBENCH_C99_SELECT(dim2, ddim2), type);
+#  define POLYBENCH_3D_ARRAY_DECL(var, type, dim1, dim2, dim3, ddim1, ddim2, ddim3) \
+  type POLYBENCH_3D(POLYBENCH_DECL_VAR(var), dim1, dim2, dim3, ddim1, ddim2, ddim3); \
+  var = POLYBENCH_ALLOC_3D_ARRAY(POLYBENCH_C99_SELECT(dim1, ddim1), POLYBENCH_C99_SELECT(dim2, ddim2), POLYBENCH_C99_SELECT(dim3, ddim3), type);
+#  define POLYBENCH_4D_ARRAY_DECL(var, type, dim1, dim2, dim3, dim4, ddim1, ddim2, ddim3, ddim4) \
+  type POLYBENCH_4D(POLYBENCH_DECL_VAR(var), dim1, dim2, ,dim3, dim4, ddim1, ddim2, ddim3, ddim4); \
+  var = POLYBENCH_ALLOC_4D_ARRAY(POLYBENCH_C99_SELECT(dim1, ddim1), POLYBENCH_C99_SELECT(dim2, ddim2), POLYBENCH_C99_SELECT(dim3, ddim3), POLYBENCH_C99_SELECT(dim4, ddim4), type);
+#  define POLYBENCH_5D_ARRAY_DECL(var, type, dim1, dim2, dim3, dim4, dim5, ddim1, ddim2, ddim3, ddim4, ddim5) \
+  type POLYBENCH_5D(POLYBENCH_DECL_VAR(var), dim1, dim2, dim3, dim4, dim5, ddim1, ddim2, ddim3, ddim4, ddim5); \
+  var = POLYBENCH_ALLOC_5D_ARRAY(POLYBENCH_C99_SELECT(dim1, ddim1), POLYBENCH_C99_SELECT(dim2, ddim2), POLYBENCH_C99_SELECT(dim3, ddim3), POLYBENCH_C99_SELECT(dim4, ddim4), POLYBENCH_C99_SELECT(dim5, ddim5), type);
+# else
+#  define POLYBENCH_1D_ARRAY_DECL(var, type, dim1, ddim1)		\
+  type POLYBENCH_1D(POLYBENCH_DECL_VAR(var), dim1, ddim1);
+#  define POLYBENCH_2D_ARRAY_DECL(var, type, dim1, dim2, ddim1, ddim2)	\
+  type POLYBENCH_2D(POLYBENCH_DECL_VAR(var), dim1, dim2, ddim1, ddim2);
+#  define POLYBENCH_3D_ARRAY_DECL(var, type, dim1, dim2, dim3, ddim1, ddim2, ddim3) \
+  type POLYBENCH_3D(POLYBENCH_DECL_VAR(var), dim1, dim2, dim3, ddim1, ddim2, ddim3);
+#  define POLYBENCH_4D_ARRAY_DECL(var, type, dim1, dim2, dim3, dim4, ddim1, ddim2, ddim3, ddim4) \
+  type POLYBENCH_4D(POLYBENCH_DECL_VAR(var), dim1, dim2, dim3, dim4, ddim1, ddim2, ddim3, ddim4);
+#  define POLYBENCH_5D_ARRAY_DECL(var, type, dim1, dim2, dim3, dim4, dim5, ddim1, ddim2, ddim3, ddim4, ddim5) \
+  type POLYBENCH_5D(POLYBENCH_DECL_VAR(var), dim1, dim2, dim3, dim4, dim5, ddim1, ddim2, ddim3, ddim4, ddim5);
+# endif
+
+
+/* Dead-code elimination macros. Use argc/argv for the run-time check. */
+# ifndef POLYBENCH_DUMP_ARRAYS
+#  define POLYBENCH_DCE_ONLY_CODE    if (argc > 42 && ! strcmp(argv[0], ""))
+# else
+#  define POLYBENCH_DCE_ONLY_CODE
+# endif
+
+# define polybench_prevent_dce(func)		\
+  POLYBENCH_DCE_ONLY_CODE			\
+  func
+
+
+/* Performance-related instrumentation. See polybench.c */
+# define polybench_start_instruments
+# define polybench_stop_instruments
+# define polybench_print_instruments
+
+
+/* PAPI support. */
+# ifdef POLYBENCH_PAPI
+extern const unsigned int polybench_papi_eventlist[];
+#  undef polybench_start_instruments
+#  undef polybench_stop_instruments
+#  undef polybench_print_instruments
+#  define polybench_set_papi_thread_report(x)	\
+   polybench_papi_counters_threadid = x;
+#  define polybench_start_instruments				\
+  polybench_prepare_instruments();				\
+  polybench_papi_init();					\
+  int evid;							\
+  for (evid = 0; polybench_papi_eventlist[evid] != 0; evid++)	\
+    {								\
+      if (polybench_papi_start_counter(evid))			\
+	continue;						\
+
+#  define polybench_stop_instruments		\
+      polybench_papi_stop_counter(evid);	\
+    }						\
+  polybench_papi_close();			\
+
+#  define polybench_print_instruments polybench_papi_print();
+# endif
+
+
+/* Timing support. */
+# if defined(POLYBENCH_TIME) || defined(POLYBENCH_GFLOPS)
+#  undef polybench_start_instruments
+#  undef polybench_stop_instruments
+#  undef polybench_print_instruments
+#  define polybench_start_instruments polybench_timer_start();
+#  define polybench_stop_instruments polybench_timer_stop();
+#  define polybench_print_instruments polybench_timer_print();
+extern double polybench_program_total_flops;
+extern void polybench_timer_start();
+extern void polybench_timer_stop();
+extern void polybench_timer_print();
+# endif
+
+/* Function declaration. */
+# ifdef POLYBENCH_TIME
+extern void polybench_timer_start();
+extern void polybench_timer_stop();
+extern void polybench_timer_print();
+# endif
+
+# ifdef POLYBENCH_PAPI
+extern void polybench_prepare_instruments();
+extern int polybench_papi_start_counter(int evid);
+extern void polybench_papi_stop_counter(int evid);
+extern void polybench_papi_init();
+extern void polybench_papi_close();
+extern void polybench_papi_print();
+# endif
+
+/* Function prototypes. */
+extern void* polybench_alloc_data(unsigned long long int n, int elt_size);
+
+/*
+ LLVM: I'm appending the content of the file polybench.c here. It'll avoid us
+       to have to copy it to the folder being compiled in the LLVM test suite.
+ */
+
+/**
+ * polybench.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <assert.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sched.h>
+#include <math.h>
+#ifdef _OPENMP
+# include <omp.h>
+#endif
+
+/* By default, collect PAPI counters on thread 0. */
+#ifndef POLYBENCH_THREAD_MONITOR
+# define POLYBENCH_THREAD_MONITOR 0
+#endif
+
+/* Total LLC cache size. By default 32+MB.. */
+#ifndef POLYBENCH_CACHE_SIZE_KB
+# define POLYBENCH_CACHE_SIZE_KB 32770
+#endif
+
+
+int polybench_papi_counters_threadid = POLYBENCH_THREAD_MONITOR;
+double polybench_program_total_flops = 0;
+
+#ifdef POLYBENCH_PAPI
+# include <papi.h>
+# define POLYBENCH_MAX_NB_PAPI_COUNTERS 96
+char* _polybench_papi_eventlist[] = {
+#include "papi_counters.list"
+  NULL
+};
+int polybench_papi_eventset;
+int polybench_papi_eventlist[POLYBENCH_MAX_NB_PAPI_COUNTERS];
+long_long polybench_papi_values[POLYBENCH_MAX_NB_PAPI_COUNTERS];
+
+#endif
+
+
+/* Timer code (gettimeofday). */
+double polybench_t_start, polybench_t_end;
+/* Timer code (RDTSC). */
+unsigned long long int polybench_c_start, polybench_c_end;
+
+static
+double rtclock()
+{
+#ifdef POLYBENCH_TIME
+  struct timeval Tp;
+  int stat;
+  stat = gettimeofday (&Tp, NULL);
+  if (stat != 0)
+    printf ("Error return from gettimeofday: %d", stat);
+  return (Tp.tv_sec + Tp.tv_usec * 1.0e-6);
+#else
+  return 0;
+#endif
+}
+
+
+#ifdef POLYBENCH_CYCLE_ACCURATE_TIMER
+static
+unsigned long long int rdtsc()
+{
+  unsigned long long int ret = 0;
+  unsigned int cycles_lo;
+  unsigned int cycles_hi;
+  __asm__ volatile ("RDTSC" : "=a" (cycles_lo), "=d" (cycles_hi));
+  ret = (unsigned long long int)cycles_hi << 32 | cycles_lo;
+  
+  return ret;
+}
+#endif
+
+void polybench_flush_cache()
+{
+  int cs = POLYBENCH_CACHE_SIZE_KB * 1024 / sizeof(double);
+  double* flush = (double*) calloc (cs, sizeof(double));
+  int i;
+  double tmp = 0.0;
+#ifdef _OPENMP
+#pragma omp parallel for
+#endif
+  for (i = 0; i < cs; i++)
+    tmp += flush[i];
+  assert (tmp <= 10.0);
+  free (flush);
+}
+
+
+#ifdef POLYBENCH_LINUX_FIFO_SCHEDULER
+void polybench_linux_fifo_scheduler()
+{
+  /* Use FIFO scheduler to limit OS interference. Program must be run
+   as root, and this works only for Linux kernels. */
+  struct sched_param schedParam;
+  schedParam.sched_priority = sched_get_priority_max (SCHED_FIFO);
+  sched_setscheduler (0, SCHED_FIFO, &schedParam);
+}
+
+
+void polybench_linux_standard_scheduler()
+{
+  /* Restore to standard scheduler policy. */
+  struct sched_param schedParam;
+  schedParam.sched_priority = sched_get_priority_max (SCHED_OTHER);
+  sched_setscheduler (0, SCHED_OTHER, &schedParam);
+}
+#endif
+
+#ifdef POLYBENCH_PAPI
+
+static
+void test_fail(char *file, int line, char *call, int retval)
+{
+  char buf[128];
+  
+  memset(buf, '\0', sizeof(buf));
+  if (retval != 0)
+    fprintf (stdout,"%-40s FAILED\nLine # %d\n", file, line);
+  else
+  {
+    fprintf (stdout,"%-40s SKIPPED\n", file);
+    fprintf (stdout,"Line # %d\n", line);
+  }
+  if (retval == PAPI_ESYS)
+  {
+    sprintf (buf, "System error in %s", call);
+    perror (buf);
+  }
+  else if (retval > 0)
+    fprintf (stdout,"Error: %s\n", call);
+  else if (retval == 0)
+    fprintf (stdout,"Error: %s\n", call);
+  else
+  {
+    char errstring[PAPI_MAX_STR_LEN];
+    PAPI_perror (retval, errstring, PAPI_MAX_STR_LEN);
+    fprintf (stdout,"Error in %s: %s\n", call, errstring);
+  }
+  fprintf (stdout,"\n");
+  if (PAPI_is_initialized ())
+    PAPI_shutdown ();
+  exit (1);
+}
+
+
+void polybench_papi_init()
+{
+# ifdef _OPENMP
+#pragma omp parallel
+  {
+#pragma omp master
+    {
+      if (omp_get_max_threads () < polybench_papi_counters_threadid)
+        polybench_papi_counters_threadid = omp_get_max_threads () - 1;
+    }
+#pragma omp barrier
+    
+    if (omp_get_thread_num () == polybench_papi_counters_threadid)
+    {
+# endif
+      int retval;
+      polybench_papi_eventset = PAPI_NULL;
+      if ((retval = PAPI_library_init (PAPI_VER_CURRENT)) != PAPI_VER_CURRENT)
+        test_fail (__FILE__, __LINE__, "PAPI_library_init", retval);
+      if ((retval = PAPI_create_eventset (&polybench_papi_eventset))
+          != PAPI_OK)
+        test_fail (__FILE__, __LINE__, "PAPI_create_eventset", retval);
+      int k;
+      for (k = 0; _polybench_papi_eventlist[k]; ++k)
+      {
+        if ((retval =
+             PAPI_event_name_to_code (_polybench_papi_eventlist[k],
+                                      &(polybench_papi_eventlist[k])))
+            != PAPI_OK)
+          test_fail (__FILE__, __LINE__, "PAPI_event_name_to_code", retval);
+      }
+      polybench_papi_eventlist[k] = 0;
+      
+      
+# ifdef _OPENMP
+    }
+  }
+#pragma omp barrier
+# endif
+}
+
+
+void polybench_papi_close()
+{
+# ifdef _OPENMP
+#pragma omp parallel
+  {
+    if (omp_get_thread_num () == polybench_papi_counters_threadid)
+    {
+# endif
+      int retval;
+      if ((retval = PAPI_destroy_eventset (&polybench_papi_eventset))
+          != PAPI_OK)
+        test_fail (__FILE__, __LINE__, "PAPI_destroy_eventset", retval);
+      if (PAPI_is_initialized ())
+        PAPI_shutdown ();
+# ifdef _OPENMP
+    }
+  }
+#pragma omp barrier
+# endif
+}
+
+int polybench_papi_start_counter(int evid)
+{
+# ifndef POLYBENCH_NO_FLUSH_CACHE
+  polybench_flush_cache();
+# endif
+  
+# ifdef _OPENMP
+# pragma omp parallel
+  {
+    if (omp_get_thread_num () == polybench_papi_counters_threadid)
+    {
+# endif
+      
+      int retval = 1;
+      char descr[PAPI_MAX_STR_LEN];
+      PAPI_event_info_t evinfo;
+      PAPI_event_code_to_name (polybench_papi_eventlist[evid], descr);
+      if (PAPI_add_event (polybench_papi_eventset,
+                          polybench_papi_eventlist[evid]) != PAPI_OK)
+        test_fail (__FILE__, __LINE__, "PAPI_add_event", 1);
+      if (PAPI_get_event_info (polybench_papi_eventlist[evid], &evinfo)
+          != PAPI_OK)
+        test_fail (__FILE__, __LINE__, "PAPI_get_event_info", retval);
+      if ((retval = PAPI_start (polybench_papi_eventset)) != PAPI_OK)
+        test_fail (__FILE__, __LINE__, "PAPI_start", retval);
+# ifdef _OPENMP
+    }
+  }
+#pragma omp barrier
+# endif
+  return 0;
+}
+
+
+void polybench_papi_stop_counter(int evid)
+{
+# ifdef _OPENMP
+# pragma omp parallel
+  {
+    if (omp_get_thread_num () == polybench_papi_counters_threadid)
+    {
+# endif
+      int retval;
+      long_long values[1];
+      values[0] = 0;
+      if ((retval = PAPI_read (polybench_papi_eventset, &values[0]))
+          != PAPI_OK)
+        test_fail (__FILE__, __LINE__, "PAPI_read", retval);
+      
+      if ((retval = PAPI_stop (polybench_papi_eventset, NULL)) != PAPI_OK)
+        test_fail (__FILE__, __LINE__, "PAPI_stop", retval);
+      
+      polybench_papi_values[evid] = values[0];
+      
+      if ((retval = PAPI_remove_event
+           (polybench_papi_eventset,
+            polybench_papi_eventlist[evid])) != PAPI_OK)
+        test_fail (__FILE__, __LINE__, "PAPI_remove_event", retval);
+# ifdef _OPENMP
+    }
+  }
+#pragma omp barrier
+# endif
+}
+
+
+void polybench_papi_print()
+{
+  int verbose = 0;
+# ifdef _OPENMP
+# pragma omp parallel
+  {
+    if (omp_get_thread_num() == polybench_papi_counters_threadid)
+    {
+#ifdef POLYBENCH_PAPI_VERBOSE
+      verbose = 1;
+#endif
+      if (verbose)
+        printf ("On thread %d:\n", polybench_papi_counters_threadid);
+#endif
+      int evid;
+      for (evid = 0; polybench_papi_eventlist[evid] != 0; ++evid)
+      {
+        if (verbose)
+          printf ("%s=", _polybench_papi_eventlist[evid]);
+        printf ("%llu ", polybench_papi_values[evid]);
+        if (verbose)
+          printf ("\n");
+      }
+      printf ("\n");
+# ifdef _OPENMP
+    }
+  }
+#pragma omp barrier
+# endif
+}
+
+#endif
+/* ! POLYBENCH_PAPI */
+
+void polybench_prepare_instruments()
+{
+#ifndef POLYBENCH_NO_FLUSH_CACHE
+  polybench_flush_cache ();
+#endif
+#ifdef POLYBENCH_LINUX_FIFO_SCHEDULER
+  polybench_linux_fifo_scheduler ();
+#endif
+}
+
+
+void polybench_timer_start()
+{
+  polybench_prepare_instruments ();
+#ifndef POLYBENCH_CYCLE_ACCURATE_TIMER
+  polybench_t_start = rtclock ();
+#else
+  polybench_c_start = rdtsc ();
+#endif
+}
+
+
+void polybench_timer_stop()
+{
+#ifndef POLYBENCH_CYCLE_ACCURATE_TIMER
+  polybench_t_end = rtclock ();
+#else
+  polybench_c_end = rdtsc ();
+#endif
+#ifdef POLYBENCH_LINUX_FIFO_SCHEDULER
+  polybench_linux_standard_scheduler ();
+#endif
+}
+
+
+void polybench_timer_print()
+{
+#ifdef POLYBENCH_GFLOPS
+  if  (__polybench_program_total_flops == 0)
+	{
+	  printf ("[PolyBench][WARNING] Program flops not defined, use polybench_set_program_flops(value)\n");
+	  printf ("%0.6lf\n", polybench_t_end - polybench_t_start);
+	}
+  else
+    printf ("%0.2lf\n",
+            (__polybench_program_total_flops /
+             (double)(polybench_t_end - polybench_t_start)) / 1000000000);
+#else
+# ifndef POLYBENCH_CYCLE_ACCURATE_TIMER
+  printf ("%0.6f\n", polybench_t_end - polybench_t_start);
+# else
+  printf ("%Ld\n", polybench_c_end - polybench_c_start);
+# endif
+#endif
+}
+
+
+
+static
+void *
+xmalloc (size_t num)
+{
+  void* new = NULL;
+  int ret = posix_memalign (&new, 32, num);
+  if (! new || ret)
+  {
+    fprintf (stderr, "[PolyBench] posix_memalign: cannot allocate memory");
+    exit (1);
+  }
+  return new;
+}
+
+
+void* polybench_alloc_data(unsigned long long int n, int elt_size)
+{
+  /// FIXME: detect overflow!
+  size_t val = n;
+  val *= elt_size;
+  void* ret = xmalloc (val);
+  
+  return ret;
+}
+
+
+
+#endif /* !POLYBENCH_H */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/polybench.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.c?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.c (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.c Mon Jul  2 14:27:28 2012
@@ -0,0 +1,94 @@
+/**
+ * template.c: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <math.h>
+
+/* Include polybench common header. */
+#include <polybench.h>
+
+/* Include benchmark-specific header. */
+/* Default data type is double, default size is N=1024. */
+#include "template-for-new-benchmark.h"
+
+
+/* Array initialization. */
+static
+void init_array(int n, DATA_TYPE POLYBENCH_2D(C,N,N,n,n))
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++)
+      C[i][j] = 42;
+}
+
+
+/* DCE code. Must scan the entire live-out data.
+   Can be used also to check the correctness of the output. */
+static
+void print_array(int n, DATA_TYPE POLYBENCH_2D(C,N,N,n,n))
+{
+  int i, j;
+
+  for (i = 0; i < n; i++)
+    for (j = 0; j < n; j++) {
+	fprintf (stderr, DATA_PRINTF_MODIFIER, C[i][j]);
+	if (i % 20 == 0) fprintf (stderr, "\n");
+    }
+  fprintf (stderr, "\n");
+}
+
+
+/* Main computational kernel. The whole function will be timed,
+   including the call and return. */
+static
+void kernel_template(int n, DATA_TYPE POLYBENCH_2D(C,N,N,n,n))
+{
+  int i, j;
+
+#pragma scop
+  for (i = 0; i < _PB_N; i++)
+    for (j = 0; j < _PB_N; j++)
+      C[i][j] += 42;
+#pragma endscop
+
+}
+
+
+int main(int argc, char** argv)
+{
+  /* Retrieve problem size. */
+  int n = N;
+
+  /* Variable declaration/allocation. */
+  POLYBENCH_2D_ARRAY_DECL(C,DATA_TYPE,N,N,n,n);
+
+  /* Initialize array(s). */
+  init_array (n, POLYBENCH_ARRAY(C));
+
+  /* Start timer. */
+  polybench_start_instruments;
+
+  /* Run kernel. */
+  kernel_template (n, POLYBENCH_ARRAY(C));
+
+  /* Stop and print timer. */
+  polybench_stop_instruments;
+  polybench_print_instruments;
+
+  /* Prevent dead-code elimination. All live-out data must be printed
+     by the function call in argument. */
+  polybench_prevent_dce(print_array(n,  POLYBENCH_ARRAY(C)));
+
+  /* Be clean. */
+  POLYBENCH_FREE_ARRAY(C);
+
+  return 0;
+}

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.c
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.h
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.h?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.h (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.h Mon Jul  2 14:27:28 2012
@@ -0,0 +1,48 @@
+/**
+ * template.h: This file is part of the PolyBench/C 3.2 test suite.
+ *
+ *
+ * Contact: Louis-Noel Pouchet <pouchet at cse.ohio-state.edu>
+ * Web address: http://polybench.sourceforge.net
+ */
+#ifndef TEMPLATE_H
+# define TEMPLATE_H
+
+/* Default to STANDARD_DATASET. */
+# if !defined(MINI_DATASET) && !defined(SMALL_DATASET) && !defined(LARGE_DATASET) && !defined(EXTRALARGE_DATASET)
+#  define STANDARD_DATASET
+# endif
+
+/* Do not define anything if the user manually defines the size. */
+# if !defined(N)
+/* Define the possible dataset sizes. */
+#  ifdef MINI_DATASET
+#   define N 32
+#  endif
+
+#  ifdef SMALL_DATASET
+#   define N 128
+#  endif
+
+#  ifdef STANDARD_DATASET /* Default if unspecified. */
+#   define N 1024
+#  endif
+
+#  ifdef LARGE_DATASET
+#   define N 2000
+#  endif
+
+#  ifdef EXTRALARGE_DATASET
+#   define N 4000
+#  endif
+# endif /* !N */
+
+# define _PB_N POLYBENCH_LOOP_BOUND(N,n)
+
+# ifndef DATA_TYPE
+#  define DATA_TYPE double
+#  define DATA_PRINTF_MODIFIER "%0.2lf "
+# endif
+
+
+#endif /* !TEMPLATE */

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/template-for-new-benchmark.h
------------------------------------------------------------------------------
    svn:executable = *

Added: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/time_benchmark.sh
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/time_benchmark.sh?rev=159553&view=auto
==============================================================================
--- test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/time_benchmark.sh (added)
+++ test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/time_benchmark.sh Mon Jul  2 14:27:28 2012
@@ -0,0 +1,78 @@
+#!/bin/sh
+## time_benchmark.sh for  in /Users/pouchet
+##
+## Made by Louis-Noel Pouchet
+## Contact: <pouchet at cse.ohio-state.edu>
+##
+## Started on  Sat Oct 29 00:03:48 2011 Louis-Noel Pouchet
+## Last update Sat Oct 29 01:16:34 2011 Louis-Noel Pouchet
+##
+
+## Maximal variance accepted between the 3 median runs for performance results.
+## Here 5%
+VARIANCE_ACCEPTED=5;
+
+if [ $# -ne 1 ]; then
+    echo "Usage: ./time_benchmarh.sh <binary_name>";
+    echo "Example: ./time_benchmarh.sh \"./a.out\"";
+    echo "Note: the file must be a Polybench program compiled with -DPOLYBENCH_TIME";
+    exit 1;
+fi;
+
+
+compute_mean_exec_time()
+{
+    file="$1";
+    benchcomputed="$2";
+    cat "$file" | grep "[0-9]\+" | sort -n | head -n 4 | tail -n 3 > avg.out;
+    expr="(0";
+    while read n; do
+	expr="$expr+$n";
+    done < avg.out;
+    time=`echo "scale=8;$expr)/3" | bc`;
+    tmp=`echo "$time" | cut -d '.' -f 1`;
+    if [ -z "$tmp" ]; then
+	time="0$time";
+    fi;
+    val1=`cat avg.out | head -n 1`;
+    val2=`cat avg.out | head -n 2 | tail -n 1`;
+    val3=`cat avg.out | head -n 3 | tail -n 1`;
+    val11=`echo "a=$val1 - $time;if(0>a)a*=-1;a" | bc 2>&1`;
+    test_err=`echo "$val11" | grep error`;
+    if ! [ -z "$test_err" ]; then
+	echo "[ERROR] Program output does not match expected single-line with time.";
+	echo "[ERROR] The program must be a PolyBench, compiled with -DPOLYBENCH_TIME";
+	exit 1;
+    fi;
+    val12=`echo "a=$val2 - $time;if(0>a)a*=-1;a" | bc`;
+    val13=`echo "a=$val3 - $time;if(0>a)a*=-1;a" | bc`;
+    myvar=`echo "$val11 $val12 $val13" | awk '{ if ($1 > $2) { if ($1 > $3) print $1; else print $3; } else { if ($2 > $3) print $2; else print $3; } }'`;
+    variance=`echo "scale=5;($myvar/$time)*100" | bc`;
+    tmp=`echo "$variance" | cut -d '.' -f 1`;
+    if [ -z "$tmp" ]; then
+	variance="0$variance";
+    fi;
+    compvar=`echo "$variance $VARIANCE_ACCEPTED" | awk '{ if ($1 < $2) print "ok"; else print "error"; }'`;
+    if [ "$compvar" = "error" ]; then
+	$ECHO_CMD "\033[31m[WARNING]\033[0m Variance is above thresold, unsafe performance measurement";
+	$ECHO_CMD "        => max deviation=$variance%, tolerance=$VARIANCE_ACCEPTED%";
+	WARNING_VARIANCE="$WARNING_VARIANCE\n$benchcomputed: max deviation=$variance%, tolerance=$VARIANCE_ACCEPTED%";
+    else
+	echo "[INFO] Maximal deviation from arithmetic mean of 3 average runs: $variance%";
+    fi;
+    PROCESSED_TIME="$time";
+    rm -f avg.out;
+}
+
+echo "[INFO] Running 5 times $1..."
+echo "[INFO] Maximal variance authorized on 3 average runs: $VARIANCE_ACCEPTED%)...";
+
+$1 > ____tempfile.data.polybench;
+$1 >> ____tempfile.data.polybench;
+$1 >> ____tempfile.data.polybench;
+$1 >> ____tempfile.data.polybench;
+$1 >> ____tempfile.data.polybench;
+
+compute_mean_exec_time "____tempfile.data.polybench" "$1";
+echo "[INFO] Normalized time: $PROCESSED_TIME";
+rm -f ____tempfile.data.polybench;

Propchange: test-suite/trunk/SingleSource/Benchmarks/Polybench/utilities/time_benchmark.sh
------------------------------------------------------------------------------
    svn:executable = *





More information about the llvm-commits mailing list