#!/bin/bash

benchmarks="-benchmarks jpeg-9e" # lua-5.1.5" #jpeg-9e" # libmad-0.15.1b lame-3.98.4 zstd-1.5.2
cc= # "-cc clang"

#for flags in \ -Og -O1 -Os -O2 -O3 -Ofast \ "-O2 -fPIE -pie" \ "-O2 -fstack-protector-strong" \ "-O2 -ftrivial-auto-var-init=zero" \ "-O2 -fPIE -pie -fstack-protector-strong -ftrivial-auto-var-init=zero"

for O in \
	-Ofast
	# -O1 -Os -O2 -O3 -Ofast
do
    for flags in \
	    "$O -march=native -pgo -flto -fwhole-program"
	#  "$O -march=native" "$O -march=x86-64" "$O -march=x86-64-v2" \
	#  "$O -march=x86-64-v3" # "$O -march=x86-64-v4"
    	#  "$O -march=native -flto -fwhole-program" \
    do
	label="${flags#-}"
	label="${label/-fPIE -pie/-PIE}"
	label="${label/-fstack-protector/-SSP}"
	label="${label/-ftrivial-auto-var-init=zero/-fTAVIzero}"
	label="${label/-march=/}"
	label="${label// /}"

	# w/ pgo run the build and benchmark twice :-/
	cflags="${flags/ -pgo/}"
	if [ "$cflags" != "$flags" ]; then
		mkdir -p $PWD/pgo
		cflags="$cflags -fprofile-generate=$PWD/pgo"
		./multi-bench.sh $cc -cflags "$cflags" $benchmarks "$label"
		cflags="${cflags/-fprofile-generate=/-fprofile-use=} -fprofile-correction"
	fi
	./multi-bench.sh $cc -cflags "$cflags" $benchmarks "$label"
    done
done
