polybench_test.sh.in: define POLYBENCH_USE_C99_PROTO
[ppcg.git] / polybench_test.sh.in
blob9b67792e3505ce5a61ad303f29370b8d6523668a
1 #!/bin/sh
3 EXEEXT=@EXEEXT@
4 DIR=@POLYBENCH_DIR@
5 SIZE=-DMINI_DATASET
6 CC="@CC@"
7 if test "x$TMPDIR" = "x"; then
8 TMPDIR=/tmp
9 fi
10 OUTDIR=`mktemp -d $TMPDIR/ppcg.XXXXXXXXXX` || exit 1
11 CPPFLAGS="-DPOLYBENCH_USE_C99_PROTO -DPOLYBENCH_DUMP_ARRAYS"
12 CPPFLAGS="$CPPFLAGS $SIZE -I $DIR/utilities"
13 CFLAGS="-lm --std=gnu99"
15 echo "Running tests in folder ${OUTDIR}"
17 run_tests () {
18 ext=$1
20 ppcg_options=$2
21 cc_options=$3
23 if [ "x$ppcg_options" = "x" ]; then
24 ppcg_option_str="none"
25 else
26 ppcg_option_str=$ppcg_options
29 if [ "x$cc_options" = "x" ]; then
30 cc_option_str="none"
31 else
32 cc_option_str=$cc_options
35 echo Test: $ext, ppcg options: $ppcg_option_str, CC options: $cc_option_str
36 for i in `cat $DIR/utilities/benchmark_list`; do
37 echo $i
38 name=`basename $i`
39 name=${name%.c}
40 source_opt="${OUTDIR}/$name.$ext.c"
41 prog_orig=${OUTDIR}/$name.orig${EXEEXT}
42 prog_opt=${OUTDIR}/$name.$ext${EXEEXT}
43 output_orig=${OUTDIR}/$name.orig.out
44 output_opt=${OUTDIR}/$name.$ext.out
45 dir=`dirname $i`
46 ./ppcg$EXEEXT --target=c -I $DIR/$dir $DIR/$i $CPPFLAGS \
47 -o $source_opt $ppcg_options || exit
48 $CC -I $DIR/$dir $CPPFLAGS $DIR/$i -o $prog_orig \
49 $DIR/utilities/polybench.c $CFLAGS
50 $prog_orig 2> $output_orig
51 $CC -I $DIR/$dir $CPPFLAGS $source_opt -o $prog_opt \
52 $DIR/utilities/polybench.c $CFLAGS $cc_options || exit
54 $prog_opt 2> $output_opt
55 cmp $output_orig $output_opt || exit
56 done
59 run_tests ppcg
61 # Test OpenMP code, if compiler supports openmp
62 echo | $CC -x c - -fsyntax-only -fopenmp -Werror 1> /dev/null 2> /dev/null
63 OUT=$?
64 if [ $OUT -eq 0 ]; then
65 run_tests ppcg_omp --openmp -fopenmp
66 echo Introduced `grep -R 'omp parallel' "${OUTDIR}" | wc -l` '"pragma omp parallel for"'
67 else
68 echo Compiler does not support OpenMP. Skipping OpenMP tests.
71 rm -r "${OUTDIR}"