#!/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 interleave_chroma_generator.cpp $HALIDE_ROOT/tools/GenGen.cpp -L$HALIDE_ROOT/lib  -lHalide -o bin/interleave_chroma_generator -ldl -lpthread

export LD_LIBRARY_PATH=$HALIDE_ROOT/lib:; ./bin/interleave_chroma_generator -o bin -e o,h,assembly,bitcode -f interleave_chroma_hvx128 target=hexagon-32-qurt-no_bounds_query-no_asserts-hvx_128
ar q bin/interleave_chroma_filters.a bin/interleave_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/interleave_chroma_run.cpp -o bin/interleave_chroma_run.o

hexagon-clang++ -mhvx-double -mv65 -DLOG2VLEN=7 bin/interleave_chroma_run.o bin/interleave_chroma_filters.a -lhexagon -L$HALIDE_ROOT/lib -lsim_qurt -o bin/interleave_chroma.out

if [ ${1:-0} -eq 1 ]
then
    hexagon-sim bin/interleave_chroma.out --timing --simulated_returnval --nullptr=2 -- 640 360 tests/input/640x360/input.u tests/input/640x360/input.v tests/output/640x360/output.uv
else
    hexagon-sim bin/interleave_chroma.out --simulated_returnval --nullptr=2 -- 640 360 tests/input/640x360/input.u tests/input/640x360/input.v tests/output/640x360/output.uv
fi

cmp tests/output/640x360/output.uv tests/golden/640x360/interleaved.uv
