#!/usr/bin/env bash
set -euo pipefail

: "${POPLAR_SDK_ENABLED:?source the Poplar SDK environment first}"

repo=$(cd "$(dirname "$0")/.." && pwd)
work=$(mktemp -d)
trap 'rm -rf "$work"' EXIT
bootloader="$POPLAR_SDK_ENABLED/bin/ipu/tile_bootloader_ipu2.elf"
config="$repo/artifacts/c600-init.ipucfg"

cd "$repo"
make build_baremetal popef_to_ipu_image ipu_image direct_ipu_loader

run_case() {
  local mode=$1 marker0=$2 marker1=$3 expected=$4
  ./build_baremetal "$work/$mode.popef" "$mode"
  ./popef_to_ipu_image "$work/$mode.popef" "$work/$mode-runtime.ipuimg" 24
  ./ipu_image redirect "$work/$mode-runtime.ipuimg" \
    "$work/$mode-direct.ipuimg" "$marker0" "$marker1"
  ./direct_ipu_loader load-bare-result "$work/$mode-direct.ipuimg" \
    "$bootloader" "$config" 23 0 0x52000 "$expected"
}

run_case result 0x19689abc 0x1969abcd 6912
run_case result-alt 0x196abcde 0x196bcdef 3333
