summaryrefslogtreecommitdiff
path: root/assembler/test/run-test.sh
blob: e02a6e09e13801dba37499a9af83be3f22c1beac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/sh

#TODO: add new test cases in environment variables ${TEST_GEN4_XXX}

DIR="$( cd -P "$( dirname "$0" )" && pwd )"
ASSEMBLER="${DIR}/../src/intel-gen4asm"

# Tests that are expected to success because they contain correct code.
# $1 is the gen level, e.g., 4 or 7
# $2 is the test case name
function check_if_work()
{
    GEN_LEVEL="$1"
    TEST_CASE_NAME="$2"
    SOURCE="${TEST_CASE_NAME}.g${1}a"
    EXPECTED="${TEST_CASE_NAME}.expected"
    TEMP_OUT="temp.out"
    ${ASSEMBLER} -g ${GEN_LEVEL} ${DIR}/${SOURCE} -o ${TEMP_OUT}
    if cmp ${TEMP_OUT} ${DIR}/${EXPECTED} 2> /dev/null;
    then
        echo "[ OK ] ${TEST_CASE_NAME}";
    else
        echo "[FAIL] ${TEST_CASE_NAME}";
        diff -u ${DIR}/${EXPECTED} ${TEMP_OUT};
    fi
}

# Tests that are expected to fail because they contain wrong code.
function check_if_fail()
{
    GEN_LEVEL="$1"
    TEST_CASE_NAME="$2"
    SOURCE="${TEST_CASE_NAME}.g${1}a"
    TEMP_OUT="temp.out"
    ${ASSEMBLER} -g ${GEN_LEVEL} ${DIR}/${SOURCE} -o ${TEMP_OUT} 2>/dev/null
    if [ $? -eq 0 ];
    then
        echo "[FAIL] ${TEST_CASE_NAME}";
    else
        echo "[ OK ] ${TEST_CASE_NAME}";
    fi
}

# Tests that are expected to success because they contain correct code.
TEST_GEN4_SHOULD_WORK="\
	mov \
	frc \
	rndd \
	rndu \
	rnde \
	rnde-intsrc \
	rndz \
	lzd \
	not \
	jmpi \
	if \
	iff \
	while \
	else \
	break \
	cont \
	halt \
	wait \
	endif \
	declare \
	immediate \
	"

# Tests that are expected to fail because they contain wrong code.
TEST_GEN4_SHOULD_FAIL="\
	rnde-intsrc \
	"

for T in ${TEST_GEN4_SHOULD_WORK}
do
    check_if_work 4 ${T}
done

for T in ${TEST_GEN4_SHOULD_FAIL}
do
    check_if_fail 4 ${T}
done