#!/bin/bash

rm -fr  pmu_statsfile.txt stats_dump.iss.0 pa_dump.core.0 ./bin gaussian5x5_up_blend_hvx128_out.bin
mkdir bin

${CXX} --std=c++11  -DLOG2VLEN=7 -DRUN=1 -DASSEMBLY=1 -DBITCODE=1 -I $HALIDE_ROOT/include -fno-rtti -O3 -g gaussian5x5_up_blend_generator.cpp $HALIDE_ROOT/tools/GenGen.cpp -L$HALIDE_ROOT/lib  -lHalide -o bin/gaussian5x5_up_blend_generator -ldl -lpthread

export LD_LIBRARY_PATH=$HALIDE_ROOT/lib:; ./bin/gaussian5x5_up_blend_generator -o bin -e o,h,assembly,bitcode -f gaussian5x5_up_blend_hvx128 target=hexagon-32-qurt-no_bounds_query-no_asserts-hvx_128
export LD_LIBRARY_PATH=$HALIDE_ROOT/lib:; ./bin/gaussian5x5_up_blend_generator -o bin -e o,h,assembly,bitcode -f gaussian5x5_up_blend_chroma_hvx128 target=hexagon-32-qurt-no_bounds_query-no_asserts-hvx_128 chroma=true
ar q bin/gaussian5x5_up_blend_filters.a bin/gaussian5x5_up_blend_hvx128.o bin/gaussian5x5_up_blend_chroma_hvx128.o

hexagon-clang++ --std=c++11 -c -mhvx-double -mv65 -DLOG2VLEN=7 -I $HALIDE_ROOT/Examples/immotion -I $HALIDE_ROOT/include -I ./bin tests/gaussian5x5_up_blend_run.cpp -o bin/gaussian5x5_up_blend_run.o
hexagon-clang++ --std=c++11 -c -mhvx-double -mv65 -DLOG2VLEN=7 -I $HALIDE_ROOT/Examples/immotion -I $HALIDE_ROOT/include -I ./bin tests_chroma/gaussian5x5_up_blend_chroma_run.cpp -o bin/gaussian5x5_up_blend_chroma_run.o

hexagon-clang++ -mhvx-double -mv65 -DLOG2VLEN=7 bin/gaussian5x5_up_blend_run.o bin/gaussian5x5_up_blend_filters.a -lhexagon -L$HALIDE_ROOT/lib -lsim_qurt -o bin/gaussian5x5_up_blend.out
hexagon-clang++ -mhvx-double -mv65 -DLOG2VLEN=7 bin/gaussian5x5_up_blend_chroma_run.o bin/gaussian5x5_up_blend_filters.a -lhexagon -L$HALIDE_ROOT/lib -lsim_qurt -o bin/gaussian5x5_up_blend_chroma.out

if [ ${1:-0} -eq 1 ]
then
    hexagon-sim bin/gaussian5x5_up_blend.out --timing --simulated_returnval --nullptr=2 -- 1280 720 tests/input/720p/curr_gaussian0.y tests/input/720p/curr_gaussian1.y tests/input/720p/mask_gaussian0.y tests/input/720p/ref_laplacian0.y tests/input/720p/blended1.y tests/output/720p/output.y
    hexagon-sim bin/gaussian5x5_up_blend_chroma.out --timing --simulated_returnval --nullptr=2 -- 640 360 tests_chroma/input/720p/curr_gaussian0.u tests_chroma/input/720p/curr_gaussian1.u tests_chroma/input/720p/mask_gaussian0.y tests_chroma/input/720p/ref_laplacian0.u tests_chroma/input/720p/blended1.u tests_chroma/output/720p/output.u
else
    hexagon-sim bin/gaussian5x5_up_blend.out --simulated_returnval --nullptr=2 -- 1280 720 tests/input/720p/curr_gaussian0.y tests/input/720p/curr_gaussian1.y tests/input/720p/mask_gaussian0.y tests/input/720p/ref_laplacian0.y tests/input/720p/blended1.y tests/output/720p/output.y
    hexagon-sim bin/gaussian5x5_up_blend_chroma.out --simulated_returnval --nullptr=2 -- 640 360 tests_chroma/input/720p/curr_gaussian0.u tests_chroma/input/720p/curr_gaussian1.u tests_chroma/input/720p/mask_gaussian0.y tests_chroma/input/720p/ref_laplacian0.u tests_chroma/input/720p/blended1.u tests_chroma/output/720p/output.u
fi

cmp tests/output/720p/output.y tests/golden/720p/blended.y

