#!/bin/bash
#
# @echo off
#
# Compare two multi-results
#
# The first specified multi-result is being compared against the second one,
# that is, if something in the first multi-result is worse than in the second
# one, it could be treated as some kind regression of the product being tested.
#
# (for additional comments see Do and asltsrun utilities).

# Includes

. common
. settings
. diffproc

# Report summary of comparing.
# arg1 - first multi-result directory
# arg2 - against the second multi-result directory
#        Opcodes of comparing results:
# arg3 - 32-bit unoptimized code
# arg4 - 64-bit unoptimized code
# arg5 - 32-bit optimized code
# arg6 - 64-bit optimized code
report_multi_runs_cmp()
{
	local msg

	echo ""
	echo "Summary of comparing:"
	echo "  -         multi-result directory (new) : $1"
	echo "  - against multi-result directory (old) : $2"
	echo "Summary of comparing:"
	echo "  `get_mode_string $NORM32 1`: `cmp_result_opcode_to_str $3`"
	echo "  `get_mode_string $NORM64 1`: `cmp_result_opcode_to_str $4`"
	echo "  `get_mode_string $OPT32 1`: `cmp_result_opcode_to_str $5`"
	echo "  `get_mode_string $OPT64 1`: `cmp_result_opcode_to_str $6`"
}

# ############################## MAIN ###############################

date

DIR0="$1"
DIR1="$2"
UTILSTATUS=0
INIT_MEM_STAT

# Check the multi-result directories

check_dir "$DIR0"
check_dir "$DIR1"

# Do compare per each possible run mode

# 32-bit unoptimized code
do_compare_two_runs "$DIR0" $NORM32 "$DIR1" $NORM32
CMP0=$?

# 64-bit unoptimized code
do_compare_two_runs "$DIR0" $NORM64 "$DIR1" $NORM64
CMP1=$?

# 32-bit optimized code
do_compare_two_runs "$DIR0" $OPT32 "$DIR1" $OPT32
CMP2=$?

# 64-bit optimized code
do_compare_two_runs "$DIR0" $OPT64 "$DIR1" $OPT64
CMP3=$?

# Report the summary of comparing
report_multi_runs_cmp "$DIR1" "$DIR0" "$CMP0" "$CMP1" "$CMP2" "$CMP3"

if [ $UTILSTATUS == 0 ]; then
	msg "Ok"
else
	msg "MISCOMPARED!"
fi

date

exit $UTILSTATUS



