polybench_test.sh: handle --verbose option
[ppcg.git] / polybench_test.sh.in
blob5557e746dd262d802ab1bd936d036dc695f77929
1 #!/bin/sh
3 keep=no
4 verbose=no
6 for option; do
7 case "$option" in
8 --keep)
9 keep=yes
11 --verbose)
12 verbose=yes
14 esac
15 done
17 EXEEXT=@EXEEXT@
18 DIR=@POLYBENCH_DIR@
19 VERSION=@GIT_HEAD_VERSION@
20 SIZE=-DMINI_DATASET
21 CC="@CC@"
22 if [ $keep = "yes" ]; then
23 OUTDIR="out.$VERSION"
24 mkdir "$OUTDIR" || exit 1
25 else
26 if test "x$TMPDIR" = "x"; then
27 TMPDIR=/tmp
29 OUTDIR=`mktemp -d $TMPDIR/ppcg.XXXXXXXXXX` || exit 1
31 CPPFLAGS="-DPOLYBENCH_USE_C99_PROTO -DPOLYBENCH_DUMP_ARRAYS"
32 CPPFLAGS="$CPPFLAGS $SIZE -I $DIR/utilities"
33 CFLAGS="-lm --std=gnu99"
35 echo "Running tests in folder ${OUTDIR}"
37 run_tests () {
38 ext=$1
40 ppcg_options=$2
41 cc_options=$3
43 if [ "x$ppcg_options" = "x" ]; then
44 ppcg_option_str="none"
45 else
46 ppcg_option_str=$ppcg_options
49 if [ "x$cc_options" = "x" ]; then
50 cc_option_str="none"
51 else
52 cc_option_str=$cc_options
55 echo Test: $ext, ppcg options: $ppcg_option_str, CC options: $cc_option_str
56 for i in `cat $DIR/utilities/benchmark_list`; do
57 echo $i
58 name=`basename $i`
59 name=${name%.c}
60 source_opt="${OUTDIR}/$name.$ext.c"
61 prog_orig=${OUTDIR}/$name.orig${EXEEXT}
62 prog_opt=${OUTDIR}/$name.$ext${EXEEXT}
63 output_orig=${OUTDIR}/$name.orig.out
64 output_opt=${OUTDIR}/$name.$ext.out
65 dir=`dirname $i`
66 if [ $verbose = "yes" ]; then
67 echo ./ppcg$EXEEXT --target=c -I $DIR/$dir $DIR/$i \
68 $CPPFLAGS -o $source_opt $ppcg_options
70 ./ppcg$EXEEXT --target=c -I $DIR/$dir $DIR/$i $CPPFLAGS \
71 -o $source_opt $ppcg_options || exit
72 $CC -I $DIR/$dir $CPPFLAGS $DIR/$i -o $prog_orig \
73 $DIR/utilities/polybench.c $CFLAGS
74 $prog_orig 2> $output_orig
75 if [ $verbose = "yes" ]; then
76 echo $CC -I $DIR/$dir $CPPFLAGS $source_opt \
77 -o $prog_opt $DIR/utilities/polybench.c \
78 $CFLAGS $cc_options
80 $CC -I $DIR/$dir $CPPFLAGS $source_opt -o $prog_opt \
81 $DIR/utilities/polybench.c $CFLAGS $cc_options || exit
83 $prog_opt 2> $output_opt
84 cmp $output_orig $output_opt || exit
85 done
88 run_tests ppcg
89 run_tests ppcg_live --no-live-range-reordering
91 # Test OpenMP code, if compiler supports openmp
92 echo | $CC -x c - -fsyntax-only -fopenmp -Werror 1> /dev/null 2> /dev/null
93 OUT=$?
94 if [ $OUT -eq 0 ]; then
95 run_tests ppcg_omp --openmp -fopenmp
96 echo Introduced `grep -R 'omp parallel' "${OUTDIR}" | wc -l` '"pragma omp parallel for"'
97 else
98 echo Compiler does not support OpenMP. Skipping OpenMP tests.
101 if [ $keep = "no" ]; then
102 rm -r "${OUTDIR}"