blob: 5957db3929ea12fa69d7a3f136c6268415f0e0b1 [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))
PERFEX := /home/vadve/criswell/local/Linux/bin/perfex
PERFOUT := /home/vadve/criswell/perf.out
PERFSCRIPT := $(BUILD_SRC_DIR)/perf.awk
#
# Events for the AMD K7 (Athlon) processors
#
K7_REFILL_SYSTEM := 0x00411F43
K7_REFILL_L2 := 0x00411F42
K7_CACHE_MISSES := 0x00410041
K7_CACHE_ACCESSES := 0x00410040
K7_EVENTS := -e $(K7_REFILL_SYSTEM) -e $(K7_REFILL_L2) -e $(K7_CACHE_MISSES) -e $(K7_CACHE_ACCESSES)
#
# Events for the Pentium 4/Xeon processors
#
P4_L1_READ_MISS := -e 0x0003B000/0x12000204@0x8000000C --p4pe=0x01000001 --p4pmv=0x1
P4_L2_READ_MISS := -e 0x0003B000/0x12002204@0x8000000E --p4pe=0x01000002 --p4pmv=0x1
#P4_L2_READ_MISS := -e 0x0003B000/0x12000204@0x8000000E --p4pe=0x01000002 --p4pmv=0x1
P4_EVENTS := $(P4_L1_READ_MISS) $(P4_L2_READ_MISS)
EVENTS := $(P4_EVENTS)
############################################################################
# Once the results are generated, create files containing each individiual
# piece of performance information.
############################################################################
# Pentium 4/Xeon Events
ifeq ($(EVENTS),$(P4_EVENTS))
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L1Misses.%): \
Output/$(TEST).L1Misses.%: Output/test.$(TEST).%
$(VERB) grep 0x12000204 $< | awk '{print $$(NF)}' > $@
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L1Misses.pa.%): \
Output/$(TEST).L1Misses.pa.%: Output/test.$(TEST).pa.%
$(VERB) grep 0x12000204 $< | awk '{print $$(NF)}' > $@
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L1Misses.allpa.%): \
Output/$(TEST).L1Misses.allpa.%: Output/test.$(TEST).allpa.%
$(VERB) grep 0x12000204 $< | awk '{print $$(NF)}' > $@
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2Misses.%): \
Output/$(TEST).L2Misses.%: Output/test.$(TEST).%
$(VERB) grep 0x12002204 $< | awk '{print $$(NF)}' > $@
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2Misses.pa.%): \
Output/$(TEST).L2Misses.pa.%: Output/test.$(TEST).pa.%
$(VERB) grep 0x12002204 $< | awk '{print $$(NF)}' > $@
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2Misses.allpa.%): \
Output/$(TEST).L2Misses.allpa.%: Output/test.$(TEST).allpa.%
$(VERB) grep 0x12002204 $< | awk '{print $$(NF)}' > $@
endif
############################################################################
# Rules for running the tests
############################################################################
ifndef PROGRAMS_HAVE_CUSTOM_RUN_RULES
#
# 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)' Default PA test on '$(TESTNAME)' program"
ifeq ($(RUN_OPTIONS),)
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.1 $(P4_L1_READ_MISS) $< > /dev/null
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.2 $(P4_L2_READ_MISS) $< > /dev/null
else
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.1 $(P4_L1_READ_MISS) $< $(RUN_OPTIONS) > /dev/null
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.2 $(P4_L2_READ_MISS) $< $(RUN_OPTIONS) > /dev/null
endif
@cat $@.1 $@.2 > $@
$(PROGRAMS_TO_TEST:%=Output/test.$(TEST).allpa.%): \
Output/test.$(TEST).allpa.%: Output/%.allnodes.cbe Output/test.$(TEST).%
@echo "========================================="
@echo "Running '$(TEST)' AllNodes PA test on '$(TESTNAME)' program"
ifeq ($(RUN_OPTIONS),)
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.1 $(P4_L1_READ_MISS) $< > /dev/null
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.2 $(P4_L2_READ_MISS) $< > /dev/null
else
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.1 $(P4_L1_READ_MISS) $< $(RUN_OPTIONS) > /dev/null
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.2 $(P4_L2_READ_MISS) $< $(RUN_OPTIONS) > /dev/null
endif
@cat $@.1 $@.2 > $@
#
# Generate events for CBE
#
$(PROGRAMS_TO_TEST:%=Output/test.$(TEST).%): \
Output/test.$(TEST).%: Output/%.nonpa.cbe
@echo "========================================="
@echo "Running '$(TEST)' No-PA test on '$(TESTNAME)' program"
ifeq ($(RUN_OPTIONS),)
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.1 $(P4_L1_READ_MISS) $< > /dev/null
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.2 $(P4_L2_READ_MISS) $< > /dev/null
else
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.1 $(P4_L1_READ_MISS) $< $(RUN_OPTIONS) > /dev/null
$(VERB) cat $(STDIN_FILENAME) | $(PERFEX) -o $@.2 $(P4_L2_READ_MISS) $< $(RUN_OPTIONS) > /dev/null
endif
@cat $@.1 $@.2 > $@
else
# This rule runs the generated executable, generating timing information, for
# SPEC
$(PROGRAMS_TO_TEST:%=Output/test.$(TEST).pa.%): \
Output/test.$(TEST).pa.%: Output/%.poolalloc.cbe
-$(SPEC_SANDBOX) poolalloccbe-$(RUN_TYPE) /dev/null $(REF_IN_DIR) \
$(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
$(PERFEX) -o ../../$@.2 $(P4_L2_READ_MISS) ../../$< $(RUN_OPTIONS)
-$(SPEC_SANDBOX) poolalloccbe-$(RUN_TYPE) /dev/null $(REF_IN_DIR) \
$(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
$(PERFEX) -o ../../$@.1 $(P4_L1_READ_MISS) ../../$< $(RUN_OPTIONS)
@cat $@.1 $@.2 > $@
# This rule runs the generated executable, generating timing information, for
# SPEC
$(PROGRAMS_TO_TEST:%=Output/test.$(TEST).allpa.%): \
Output/test.$(TEST).allpa.%: Output/%.allnodes.cbe
-$(SPEC_SANDBOX) allnodescbe-$(RUN_TYPE) /dev/null $(REF_IN_DIR) \
$(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
$(PERFEX) -o ../../$@.2 $(P4_L2_READ_MISS) ../../$< $(RUN_OPTIONS)
-$(SPEC_SANDBOX) allnodescbe-$(RUN_TYPE) /dev/null $(REF_IN_DIR) \
$(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
$(PERFEX) -o ../../$@.1 $(P4_L1_READ_MISS) ../../$< $(RUN_OPTIONS)
@cat $@.1 $@.2 > $@
# This rule runs the generated executable, generating timing information, for
# SPEC
$(PROGRAMS_TO_TEST:%=Output/test.$(TEST).%): \
Output/test.$(TEST).%: Output/%.nonpa.cbe
-$(SPEC_SANDBOX) nonpacbe-$(RUN_TYPE) /dev/null $(REF_IN_DIR) \
$(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
$(PERFEX) -o ../../$@.2 $(P4_L2_READ_MISS) ../../$< $(RUN_OPTIONS)
-$(SPEC_SANDBOX) nonpacbe-$(RUN_TYPE) /dev/null $(REF_IN_DIR) \
$(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
$(PERFEX) -o ../../$@.1 $(P4_L1_READ_MISS) ../../$< $(RUN_OPTIONS)
@cat $@.1 $@.2 > $@
endif
############################################################################
# Report Targets
############################################################################
ifeq ($(EVENTS),$(K7_EVENTS))
$(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \
Output/%.$(TEST).report.txt: $(PROGRAMS_TO_TEST:%=Output/$(TEST).cacheaccesses.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).cacheaccesses.pa.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).cachemisses.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).cachemisses.pa.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L1Misses.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L1Misses.pa.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2Misses.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2Misses.pa.%)
@echo "Program:" $* > $@
@echo "-------------------------------------------------------------" >> $@
@printf "CBE-PA-Cache-Accesses: %lld\n" `cat Output/$(TEST).cacheaccesses.pa.$*` >> $@
@printf "CBE-Cache-Accesses: %lld\n" `cat Output/$(TEST).cacheaccesses.$*` >> $@
@printf "CBE-PA-Cache-Misses: %lld\n" `cat Output/$(TEST).cachemisses.pa.$*` >> $@
@printf "CBE-Cache-Misses: %lld\n" `cat Output/$(TEST).cachemisses.$*` >> $@
@printf "CBE-PA-L1-Cache-Misses: %lld\n" `cat Output/$(TEST).L1Misses.pa.$*` >> $@
@printf "CBE-L1-Cache-Misses: %lld\n" `cat Output/$(TEST).L1Misses.$*` >> $@
@printf "CBE-PA-L2-Cache-Misses: %lld\n" `cat Output/$(TEST).L2Misses.pa.$*` >> $@
@printf "CBE-L2-Cache-Misses: %lld\n" `cat Output/$(TEST).L2Misses.$*` >> $@
endif
ifeq ($(EVENTS),$(P4_EVENTS))
$(PROGRAMS_TO_TEST:%=Output/%.$(TEST).report.txt): \
Output/%.$(TEST).report.txt: \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L1Misses.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L1Misses.pa.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L1Misses.allpa.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2Misses.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2Misses.pa.%) \
$(PROGRAMS_TO_TEST:%=Output/$(TEST).L2Misses.allpa.%)
@echo "Program:" $* > $@
@echo "-------------------------------------------------------------" >> $@
@printf "CBE-PA-L1-Cache-Misses: %lld\n" `cat Output/$(TEST).L1Misses.pa.$*` >> $@
@printf "CBE-ALLPA-L1-Cache-Misses: %lld\n" `cat Output/$(TEST).L1Misses.allpa.$*` >> $@
@printf "CBE-L1-Cache-Misses: %lld\n" `cat Output/$(TEST).L1Misses.$*` >> $@
@printf "CBE-PA-L2-Cache-Misses: %lld\n" `cat Output/$(TEST).L2Misses.pa.$*` >> $@
@printf "CBE-ALLPA-L2-Cache-Misses: %lld\n" `cat Output/$(TEST).L2Misses.allpa.$*` >> $@
@printf "CBE-L2-Cache-Misses: %lld\n" `cat Output/$(TEST).L2Misses.$*` >> $@
endif
$(PROGRAMS_TO_TEST:%=test.$(TEST).%): \
test.$(TEST).%: Output/%.$(TEST).report.txt
@echo "---------------------------------------------------------------"
@echo ">>> ========= '$(RELDIR)/$*' Program"
@echo "---------------------------------------------------------------"
@cat $<
REPORT_DEPENDENCIES := $(PROGRAMS_TO_TEST:%=Output/%.llvm.bc)