aboutsummaryrefslogtreecommitdiff
path: root/TEST.nightly.Makefile
blob: 5a72f1aa0c7936f21b78a5bcca528f45c90f5107 (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
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
##===- 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 := $(PROJ_SRC_ROOT)
RELDIR  := $(subst $(PROGDIR),,$(CURDIR))

REPORTS_TO_GEN := nat
REPORT_DEPENDENCIES :=
ifndef DISABLE_LLC
REPORTS_TO_GEN +=  llc compile
REPORT_DEPENDENCIES += $(LLC) $(LOPT)
endif
ifndef DISABLE_JIT
REPORTS_TO_GEN +=  jit compile
REPORT_DEPENDENCIES += $(LLI) $(LOPT)
endif
ifdef ENABLE_LLCBETA
REPORTS_TO_GEN += llc-beta compile
REPORT_DEPENDENCIES += $(LLC) $(LOPT)
endif
ifdef ENABLE_OPTBETA
REPORTS_TO_GEN += opt-beta compile
REPORT_DEPENDENCIES += $(LOPT)
endif
REPORTS_SUFFIX := $(addsuffix .report.txt, $(REPORTS_TO_GEN))

# Compilation tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.compile.report.txt): \
Output/%.nightly.compile.report.txt: Output/%.llvm.bc
	@echo > $@
	@-if test -f Output/$*.linked.bc.info; then \
	  echo "TEST-PASS: compile $(RELDIR)/$*" >> $@;\
	  printf "TEST-RESULT-compile: " >> $@;\
	  grep "Total Execution Time" Output/$*.linked.bc.info | tail -n 1 >> $@;\
	  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 "^user" Output/$*.out-nat.time >> $@

# LLC tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.llc.report.txt): \
Output/%.nightly.llc.report.txt: Output/%.exe-llc
	@echo > $@
	@-if test -f Output/$*.exe-llc; then \
	  head -n 100 Output/$*.exe-llc >> $@; \
	  echo "TEST-PASS: llc $(RELDIR)/$*" >> $@;\
	  printf "TEST-RESULT-llc: " >> $@;\
	  grep "Total Execution Time" Output/$*.llc.s.info | tail -n 1 >> $@;\
	  printf "TEST-RESULT-llc-time: " >> $@;\
	  grep "^user" Output/$*.out-llc.time >> $@;\
	  echo >> $@;\
	else  \
	  echo "TEST-FAIL: llc $(RELDIR)/$*" >> $@;\
	fi

# LLC experimental tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.llc-beta.report.txt): \
Output/%.nightly.llc-beta.report.txt: Output/%.llvm.bc Output/%.exe-llc-beta
	@echo > $@
	@-if test -f Output/$*.exe-llc-beta; then \
	  head -n 100 Output/$*.exe-llc-beta >> $@; \
	  echo "TEST-PASS: llc-beta $(RELDIR)/$*" >> $@;\
	  printf "TEST-RESULT-llc-beta: " >> $@;\
	  grep "Total Execution Time" Output/$*.llc-beta.s.info | tail -n 1 >> $@;\
	  printf "TEST-RESULT-llc-beta-time: " >> $@;\
	  grep "^user" Output/$*.out-llc-beta.time >> $@;\
	  echo >> $@;\
	else  \
	  echo "TEST-FAIL: llc-beta $(RELDIR)/$*" >> $@;\
	fi

# OPT experimental tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.opt-beta.report.txt): \
Output/%.nightly.opt-beta.report.txt: Output/%.exe-opt-beta
	@echo > $@
	@-if test -f Output/$*.exe-opt-beta; then \
	  head -n 100 Output/$*.exe-opt-beta >> $@; \
	  echo "TEST-PASS: opt-beta $(RELDIR)/$*" >> $@;\
	  printf "TEST-RESULT-opt-beta: " >> $@;\
	  grep "Total Execution Time" Output/$*.opt-beta.s.info | tail -n 1 >> $@;\
	  printf "TEST-RESULT-opt-beta-time: " >> $@;\
	  grep "^user" Output/$*.out-opt-beta.time >> $@;\
	  echo >> $@;\
	else  \
	  echo "TEST-FAIL: opt-beta $(RELDIR)/$*" >> $@;\
	fi

# JIT tests
$(PROGRAMS_TO_TEST:%=Output/%.nightly.jit.report.txt): \
Output/%.nightly.jit.report.txt: Output/%.exe-jit
	@echo > $@
	@-if test -f Output/$*.exe-jit; then \
	  head -n 100 Output/$*.exe-jit >> $@; \
	  echo "TEST-PASS: jit $(RELDIR)/$*" >> $@;\
	  printf "TEST-RESULT-jit-time: " >> $@;\
	  grep "^user" Output/$*.out-jit.time >> $@;\
	  echo >> $@;\
	  printf "TEST-RESULT-jit-comptime: " >> $@;\
	  grep "Total Execution Time" Output/$*.out-jit.info | tail -n 1 >> $@;\
	  echo >> $@;\
	else  \
	  echo "TEST-FAIL: jit $(RELDIR)/$*" >> $@;\
	fi

# Overall tests: just run subordinate tests
$(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \
Output/%.$(TEST).report.txt: $(addprefix Output/%.nightly., $(REPORTS_SUFFIX))
	$(VERB) $(RM) -f $@
	@echo "---------------------------------------------------------------" >> $@
	@echo ">>> ========= '$(RELDIR)/$*' Program" >> $@
	@echo "---------------------------------------------------------------" >> $@
	-cat $(addprefix Output/$*.nightly., $(REPORTS_SUFFIX)) >> $@



$(PROGRAMS_TO_TEST:%=test.$(TEST).%): \
test.$(TEST).%: Output/%.$(TEST).report.txt
	@-cat $<

ifdef ENABLE_LLCBETA
$(PROGRAMS_TO_TEST:%=build.$(TEST).%): \
build.$(TEST).%: Output/%.llc Output/%.llc-beta
	@echo "Finished Building: $<"
else
$(PROGRAMS_TO_TEST:%=build.$(TEST).%): \
build.$(TEST).%: Output/%.llc
	@echo "Finished Building: $<"
endif