forked from llvm/llvm-test-suite
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTEST.nightly.Makefile
157 lines (139 loc) · 5.04 KB
/
TEST.nightly.Makefile
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
##===- TEST.nightly.Makefile ------------------------------*- Makefile -*--===##
#
# This test is used in conjunction with the llvm/utils/NightlyTest* stuff to
# generate information about program status for the nightly report.
#
##===----------------------------------------------------------------------===##
CURDIR := $(shell cd .; pwd)
PROGDIR := $(BUILD_SRC_ROOT)
RELDIR := $(subst $(PROGDIR),,$(CURDIR))
CFLAGS := -O3
REPORTS_TO_GEN := compile nat
ifndef DISABLE_LLC
REPORTS_TO_GEN += llc
endif
ifndef DISABLE_JIT
REPORTS_TO_GEN += jit
endif
ifndef DISABLE_CBE
REPORTS_TO_GEN += cbe
endif
ifdef ENABLE_LINEARSCAN
REPORTS_TO_GEN += llc-ls jit-ls
endif
REPORTS_SUFFIX := $(addsuffix .report.txt, $(REPORTS_TO_GEN))
TIMEOPT = -time-passes -stats -info-output-file=$(CURDIR)/$@.info
EXTRA_LLI_OPTS = $(TIMEOPT)
# Compilation tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.compile.report.txt): \
Output/%.nightly.compile.report.txt: Output/%.llvm.bc $(LGCCAS)
@echo > $@
@echo '$(LGCCAS) Output/$*.linked.rll -o /dev/null $(TIMEOPT) >>$@ 2>&1'
@-if ($(LGCCAS) Output/$*.linked.rll -o /dev/null $(TIMEOPT) >>$@ 2>&1)\
;then \
echo "TEST-PASS: compile $(RELDIR)/$*" >> $@;\
printf "TEST-RESULT-compile: " >> $@;\
grep "Total Execution Time" $@.info >> $@;\
echo >> $@;\
printf "TEST-RESULT-compile: " >> $@;\
wc -c $< >> $@;\
echo >> $@;\
else \
echo "TEST-FAIL: compile $(RELDIR)/$*" >> $@;\
fi
# NAT tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.nat.report.txt): \
Output/%.nightly.nat.report.txt: Output/%.out-nat
@echo > $@
printf "TEST-RESULT-nat-time: " >> $@
-grep "^real" Output/$*.out-nat.time >> $@
# LLC tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.llc.report.txt): \
Output/%.nightly.llc.report.txt: Output/%.llvm.bc Output/%.exe-llc $(LLC)
@echo > $@
-head -n 100 Output/$*.exe-llc >> $@
@-if test -f Output/$*.exe-llc; then \
echo "TEST-PASS: llc $(RELDIR)/$*" >> $@;\
$(LLC) $< -o /dev/null -f $(TIMEOPT) >> $@ 2>&1; \
printf "TEST-RESULT-llc: " >> $@;\
grep "Total Execution Time" $@.info >> $@;\
printf "TEST-RESULT-llc-time: " >> $@;\
grep "^real" Output/$*.out-llc.time >> $@;\
echo >> $@;\
else \
echo "TEST-FAIL: llc $(RELDIR)/$*" >> $@;\
fi
# LLC experimental tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.llc-ls.report.txt): \
Output/%.nightly.llc-ls.report.txt: Output/%.llvm.bc Output/%.exe-llc-ls $(LLC)
@echo > $@
-head -n 100 Output/$*.exe-llc-ls >> $@
@-if test -f Output/$*.exe-llc-ls; then \
echo "TEST-PASS: llc-ls $(RELDIR)/$*" >> $@;\
$(LLC) $< -o /dev/null -f $(TIMEOPT) >> $@ 2>&1; \
printf "TEST-RESULT-llc-ls: " >> $@;\
grep "Total Execution Time" $@.info >> $@;\
printf "TEST-RESULT-llc-ls-time: " >> $@;\
grep "^real" Output/$*.out-llc-ls.time >> $@;\
echo >> $@;\
else \
echo "TEST-FAIL: llc-ls $(RELDIR)/$*" >> $@;\
fi
# CBE tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.cbe.report.txt): \
Output/%.nightly.cbe.report.txt: Output/%.llvm.bc Output/%.exe-cbe $(LDIS)
@echo > $@
-head -n 100 Output/$*.exe-cbe >> $@
@-if test -f Output/$*.exe-cbe; then \
echo "TEST-PASS: cbe $(RELDIR)/$*" >> $@;\
printf "TEST-RESULT-cbe-time: " >> $@;\
grep "^real" Output/$*.out-cbe.time >> $@;\
echo >> $@;\
else \
echo "TEST-FAIL: cbe $(RELDIR)/$*" >> $@;\
fi
# JIT tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.jit.report.txt): \
Output/%.nightly.jit.report.txt: Output/%.llvm.bc Output/%.exe-jit $(LLI)
@echo > $@
-head -n 100 Output/$*.exe-jit >> $@
@-if test -f Output/$*.exe-jit; then \
echo "TEST-PASS: jit $(RELDIR)/$*" >> $@;\
printf "TEST-RESULT-jit-time: " >> $@;\
grep "^real" Output/$*.out-jit.time >> $@;\
echo >> $@;\
printf "TEST-RESULT-jit-comptime: " >> $@;\
grep "Total Execution Time" Output/$*.out-jit.info >> $@;\
echo >> $@;\
printf "TEST-RESULT-jit-machcode: " >> $@;\
grep "bytes of machine code compiled" Output/$*.out-jit.info >> $@;\
echo >> $@;\
else \
echo "TEST-FAIL: jit $(RELDIR)/$*" >> $@;\
fi
# JIT experimental tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.jit-ls.report.txt): \
Output/%.nightly.jit-ls.report.txt: Output/%.llvm.bc Output/%.exe-jit-ls $(JIT)
@echo > $@
-head -n 100 Output/$*.exe-jit-ls >> $@
@-if test -f Output/$*.exe-jit-ls; then \
echo "TEST-PASS: jit-ls $(RELDIR)/$*" >> $@;\
printf "TEST-RESULT-jit-ls: " >> $@;\
grep "Total Execution Time" $@.info >> $@;\
printf "TEST-RESULT-jit-ls-time: " >> $@;\
grep "^real" Output/$*.out-jit-ls.time >> $@;\
echo >> $@;\
else \
echo "TEST-FAIL: jit-ls $(RELDIR)/$*" >> $@;\
fi
# Overall tests: just run subordinate tests
$(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \
Output/%.$(TEST).report.txt: $(addprefix Output/%.nightly., $(REPORTS_SUFFIX))
-cat $(addprefix Output/$*.nightly., $(REPORTS_SUFFIX)) > $@
$(PROGRAMS_TO_TEST:%=test.$(TEST).%): \
test.$(TEST).%: Output/%.$(TEST).report.txt
@echo "---------------------------------------------------------------"
@echo ">>> ========= '$(RELDIR)/$*' Program"
@echo "---------------------------------------------------------------"
@-cat $<
REPORT_DEPENDENCIES := $(LDIS) $(LLI) $(LLC)