#!/bin/bash

rm -fr  pmu_statsfile.txt stats_dump.iss.0 pa_dump.core.0 ./bin blend_frames_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 blend_frames_generator.cpp $HALIDE_ROOT/tools/GenGen.cpp -L$HALIDE_ROOT/lib  -lHalide -o bin/blend_frames_generator -ldl -lpthread

export LD_LIBRARY_PATH=$HALIDE_ROOT/lib:; ./bin/blend_frames_generator -o bin -e o,h,assembly,bitcode -f blend_frames_hvx128 target=hexagon-32-qurt-no_bounds_query-no_asserts-hvx_128
export LD_LIBRARY_PATH=$HALIDE_ROOT/lib:; ./bin/blend_frames_generator -o bin -e o,h,assembly,bitcode -f blend_frames_chroma_hvx128 target=hexagon-32-qurt-no_bounds_query-no_asserts-hvx_128 chroma=true
ar q bin/blend_frames_filters.a bin/blend_frames_hvx128.o bin/blend_frames_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/blend_frames_run.cpp -o bin/blend_frames_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/blend_frames_chroma_run.cpp -o bin/blend_frames_chroma_run.o

hexagon-clang++ -mhvx-double -mv65 -DLOG2VLEN=7 bin/blend_frames_run.o bin/blend_frames_filters.a -lhexagon -L$HALIDE_ROOT/lib -lsim_qurt -o bin/blend_frames.out
hexagon-clang++ -mhvx-double -mv65 -DLOG2VLEN=7 bin/blend_frames_chroma_run.o bin/blend_frames_filters.a -lhexagon -L$HALIDE_ROOT/lib -lsim_qurt -o bin/blend_frames_chroma.out

if [ ${1:-0} -eq 1 ]
then
    hexagon-sim bin/blend_frames.out --timing --simulated_returnval --nullptr=2 -- 320 180 ./tests/input/320x180/ref_frame.y ./tests/input/320x180/cur_frame.y ./tests/input/320x180/mask.y ./tests/output/320x180/output.y
    hexagon-sim bin/blend_frames_chroma.out --timing --simulated_returnval --nullptr=2 -- 160 90 ./tests_chroma/input/160x90/ref_frame.u ./tests_chroma/input/160x90/cur_frame.u ./tests_chroma/input/160x90/mask.y ./tests_chroma/output/160x90/output.u
else
    hexagon-sim bin/blend_frames.out --simulated_returnval --nullptr=2 -- 320 180 ./tests/input/320x180/ref_frame.y ./tests/input/320x180/cur_frame.y ./tests/input/320x180/mask.y ./tests/output/320x180/output.y
    hexagon-sim bin/blend_frames_chroma.out --simulated_returnval --nullptr=2 -- 160 90 ./tests_chroma/input/160x90/ref_frame.u ./tests_chroma/input/160x90/cur_frame.u ./tests_chroma/input/160x90/mask.y ./tests_chroma/output/160x90/output.u
fi

cmp tests/output/320x180/output.y tests/golden/320x180/blended.y
cmp tests_chroma/output/160x90/output.u tests_chroma/golden/160x90/blended.u

