blob: 37b3cf17eb38c241d07242841ffe7ff6a035b37a [file] [log] [blame]
##===- poolalloc/TEST.vtl.Makefile -------------------------*- Makefile -*-===##
#
# Makefile for getting performance metrics using Intel's VTune.
#
##===----------------------------------------------------------------------===##
TESTNAME = $*
CURDIR := $(shell cd .; pwd)
PROGDIR := $(shell cd $(LLVM_SRC_ROOT)/projects/llvm-test; pwd)/
RELDIR := $(subst $(PROGDIR),,$(CURDIR))
VTL := /opt/intel/vtune/bin/vtl
#
# Events: These will need to be modified for every different CPU that is used
# (i.e. the Pentium 3 on Cypher has a different set of available events than
# the Pentium 4 on Zion).
#
P4_EVENTS := -ec
P4_EVENTS += en='2nd Level Cache Read Misses':sa=5000
P4_EVENTS += -ec
P4_EVENTS += en='2nd-Level Cache Read References'
#P4_EVENTS += -ec
#P4_EVENTS += en='3rd-Level Cache Read Misses':sa=5000
#P4_EVENTS += en='1st Level Cache Load Misses Retired'
P3_EVENTS := -ec en='L2 Cache Request Misses (highly correlated)'
EVENTS := $(P4_EVENTS)
#
# Once the results are generated, create files containing each individiual
# piece of performance information.
#
# Pentium 4 Events
ifeq ($(EVENTS),$(P4_EVENTS))
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2cachemisses.%): \
Output/$(TEST).L2cachemisses.%: Output/test.$(TEST).%
grep "Output/$*.cbe" $< | grep "Cache Read Misses" | grep "2nd" | awk '{print $$(NF-1)}' > $@
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2cachemisses.pa.%): \
Output/$(TEST).L2cachemisses.pa.%: Output/test.$(TEST).pa.%
grep "Output/$*.poolalloc.cbe" $< | grep "Cache Read Misses" | grep "2nd" | awk '{print $$(NF-1)}' > $@
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2cacherefs.%): \
Output/$(TEST).L2cacherefs.%: Output/test.$(TEST).%
grep "Output/$*.cbe" $< | grep "Cache Read References" | grep "2nd" | awk '{print $$(NF-1)}' > $@
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2cacherefs.pa.%): \
Output/$(TEST).L2cacherefs.pa.%: Output/test.$(TEST).pa.%
grep "Output/$*.poolalloc.cbe" $< | grep "Cache Read References" | grep "2nd" | awk '{print $$(NF-1)}' > $@
endif
# Pentium 3 Events
ifeq ($(EVENTS),$(P3_EVENTS))
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2cachemisses.%): \
Output/$(TEST).L2cachemisses.%: Output/test.$(TEST).%
grep "Output/$*.cbe" $< | grep " L2 Cache Request Misses" | awk '{print $$(NF-1)}' > $@
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2cachemisses.pa.%): \
Output/$(TEST).L2cachemisses.pa.%: Output/test.$(TEST).pa.%
grep "Output/$*.poolalloc.cbe" $< | grep " L2 Cache Request Misses" | awk '{print $$(NF-1)}' > $@
endif
#
# Generate events for Pool Allocated CBE
#
$(PROGRAMS_TO_TEST:%=Output/test.$(TEST).pa.%): \
Output/test.$(TEST).pa.%: Output/%.poolalloc.cbe Output/test.$(TEST).%
@echo "========================================="
@echo "Running '$(TEST)' test on '$(TESTNAME)' program"
ifeq ($(RUN_OPTIONS),)
$(VERB) cat $(STDIN_FILENAME) | $(VTL) activity $* -d 50 -c sampling -o "$(EVENTS)" -app $< -moi $<
else
$(VERB) cat $(STDIN_FILENAME) | $(VTL) activity $* -d 50 -c sampling -o "$(EVENTS)" -app $<,"$(RUN_OPTIONS)" -moi $<
endif
$(VERB) $(VTL) run $*
$(VERB) $(VTL) view > $@
$(VERB) $(VTL) delete $* -f
#
# Generate events for CBE
#
$(PROGRAMS_TO_TEST:%=Output/test.$(TEST).%): \
Output/test.$(TEST).%: Output/%.cbe
@echo "========================================="
@echo "Running '$(TEST)' test on '$(TESTNAME)' program"
ifeq ($(RUN_OPTIONS),)
$(VERB) cat $(STDIN_FILENAME) | $(VTL) activity $* -d 50 -c sampling -o "$(EVENTS)" -app $< -moi $<
else
$(VERB) cat $(STDIN_FILENAME) | $(VTL) activity $* -d 50 -c sampling -o "$(EVENTS)" -app $<,"$(RUN_OPTIONS)" -moi $<
endif
$(VERB) $(VTL) run $*
$(VERB) $(VTL) view > $@
$(VERB) $(VTL) delete $* -f
$(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \
Output/%.$(TEST).report.txt: $(PROGRAMS_TO_TEST:%=Output/$(TEST).L2cachemisses.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2cachemisses.pa.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2cacherefs.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2cacherefs.pa.%)
@echo > $@
@echo "CBE-PA-L2-Misses:" `cat Output/$(TEST).L2cachemisses.pa.$*` >> $@
@echo "CBE-PA-L2-Refs:" `cat Output/$(TEST).L2cacherefs.pa.$*` >> $@
@echo "CBE-L2-Misses:" `cat Output/$(TEST).L2cachemisses.$*` >> $@
@echo "CBE-L2-Refs:" `cat Output/$(TEST).L2cacherefs.$*` >> $@
$(PROGRAMS_TO_TEST:%=test.$(TEST).%): \
test.$(TEST).%: Output/%.$(TEST).report.txt
@echo "---------------------------------------------------------------"
@echo ">>> ========= '$(RELDIR)/$*' Program"
@echo "---------------------------------------------------------------"
@cat $<