blob: b974d002e339c52df84303eba5944611a56d6d96 [file] [log] [blame]
#!/bin/sh
keep=no
for option; do
case "$option" in
--keep)
keep=yes
;;
esac
done
EXEEXT=@EXEEXT@
VERSION=@GIT_HEAD_VERSION@
CC="@CC@"
CFLAGS="--std=gnu99"
srcdir="@srcdir@"
if [ $keep = "yes" ]; then
OUTDIR="opencl_test.$VERSION"
mkdir "$OUTDIR" || exit 1
else
if test "x$TMPDIR" = "x"; then
TMPDIR=/tmp
fi
OUTDIR=`mktemp -d $TMPDIR/ppcg.XXXXXXXXXX` || exit 1
fi
run_tests () {
subdir=$1
ppcg_options=$2
echo Test with PPCG options \'$ppcg_options\'
mkdir ${OUTDIR}/${subdir} || exit 1
for i in $srcdir/tests/*.c; do
echo $i
name=`basename $i`
name="${name%.c}"
out_c="${OUTDIR}/${subdir}/$name.ppcg.c"
out="${OUTDIR}/${subdir}/$name.ppcg$EXEEXT"
options="--target=opencl --opencl-no-use-gpu $ppcg_options"
functions="$srcdir/tests/${name}_opencl_functions.cl"
if test -f $functions; then
options="$options --opencl-include-file=$functions"
options="$options --opencl-compiler-options=-I."
fi
./ppcg$EXEEXT $options $i -o "$out_c" || exit
$CC $CFLAGS -I "$srcdir" "$srcdir/ocl_utilities.c" -lOpenCL \
-I. "$out_c" -o "$out" || exit
$out || exit
done
}
run_tests default
run_tests embed --opencl-embed-kernel-code
for i in $srcdir/examples/*.c; do
echo $i
name=`basename $i`
name="${name%.c}"
exe_ref="${OUTDIR}/$name.ref$EXEEXT"
gen_ocl="${OUTDIR}/$name.ppcg.c"
exe_ocl="${OUTDIR}/$name.ppcg$EXEEXT"
output_ref="${OUTDIR}/$name.ref.out"
output_ocl="${OUTDIR}/$name.ppcg.out"
$CC $CFLAGS $i -o $exe_ref || exit
./ppcg$EXEEXT --target=opencl --opencl-no-use-gpu $i -o "$gen_ocl" || \
exit
$CC $CFLAGS -I "$srcdir" "$srcdir/ocl_utilities.c" -lOpenCL \
"$gen_ocl" -o "$exe_ocl" || exit
$exe_ref > $output_ref || exit
$exe_ocl > $output_ocl || exit
cmp $output_ref $output_ocl || exit
done
if [ $keep = "no" ]; then
rm -r "${OUTDIR}"
fi