[llvm-commits] CVS: llvm-test/External/PerfectClub/Makefile.perfect Sandbox.sh

Misha Brukman brukman at cs.uiuc.edu
Sun Apr 24 17:38:47 PDT 2005



Changes in directory llvm-test/External/PerfectClub:

Makefile.perfect added (r1.1)
Sandbox.sh added (r1.1)
---
Log message:

Add SPEC-like template Makefile and sandbox runner script


---
Diffs of the changes:  (+203 -0)

 Makefile.perfect |  173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 Sandbox.sh       |   30 +++++++++
 2 files changed, 203 insertions(+)


Index: llvm-test/External/PerfectClub/Makefile.perfect
diff -c /dev/null llvm-test/External/PerfectClub/Makefile.perfect:1.1
*** /dev/null	Sun Apr 24 19:38:46 2005
--- llvm-test/External/PerfectClub/Makefile.perfect	Sun Apr 24 19:38:36 2005
***************
*** 0 ****
--- 1,173 ----
+ ##===- Makefile.perfect ------------------------------------*- Makefile -*-===##
+ #
+ # This makefile is a template for building PERFECT as an external test.
+ #
+ ##===----------------------------------------------------------------------===##
+ 
+ include $(LEVEL)/Makefile.config
+ 
+ ## Information the test should have provided...
+ ifndef STDOUT_FILENAME
+ STDOUT_FILENAME := standard.out
+ endif
+ LDFLAGS += -lm
+ 
+ # Get the current directory, the name of the benchmark, and the current
+ # subdirectory of the PERFECT directory we are in
+ #
+ CURRENT_DIR := $(shell cd .; pwd)
+ BENCH_NAME  := $(subst $(shell cd ..   ; pwd),,$(CURRENT_DIR))
+ 
+ # Remove any leading /'s from the paths
+ BENCH_NAME  := $(patsubst /%,%,$(BENCH_NAME))
+ 
+ ifndef PERFECT_BENCH_DIR
+ PERFECT_BENCH_DIR := $(PERFECT_ROOT)/$(BENCH_NAME)
+ endif
+ 
+ PROG := $(BENCH_NAME)
+ ifndef Source
+ Source := $(wildcard $(PERFECT_BENCH_DIR)/*.c $(PERFECT_BENCH_DIR)/*.cc)
+ Source += $(wildcard $(PERFECT_BENCH_DIR)/*.f)
+ endif
+ 
+ # Disable the default Output/%.out-* targets...
+ PROGRAMS_HAVE_CUSTOM_RUN_RULES := 1
+ SourceDir := $(PERFECT_BENCH_DIR)
+ 
+ include $(LEVEL)/MultiSource/Makefile.multisrc
+ 
+ # Do not pass -Wall to compile commands...
+ LCCFLAGS  := -O3
+ LCXXFLAGS := -O3
+ 
+ CPPFLAGS += -I$(PERFECT_BENCH_DIR)
+ PERFECT_SANDBOX := $(PROGDIR)/External/PerfectClub/Sandbox.sh
+ 
+ # Information about testing the program...
+ REF_IN_DIR  := $(PERFECT_BENCH_DIR)
+ 
+ # specify how to generate output from the PERFECT programs.  Basically we just
+ # run the program in a sandbox (a special directory we create), then we cat all
+ # of the outputs together.
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.out-nat): \
+ Output/%.out-nat: Output/%.native
+ 	$(PERFECT_SANDBOX) nat $@ $(REF_IN_DIR) \
+              $(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
+                   ../$*.native $(RUN_OPTIONS)
+ 	-(cd Output/nat; cat $(LOCAL_OUTPUTS)) > $@
+ 	-cp Output/nat/$(STDOUT_FILENAME).time $@.time
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.out-lli): \
+ Output/%.out-lli: Output/%.llvm.bc $(LLI)
+ 	$(PERFECT_SANDBOX) lli $@ $(REF_IN_DIR) \
+              $(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
+                   $(LLI) $(LLI_OPTS) ../$*.llvm.bc $(RUN_OPTIONS)
+ 	-(cd Output/lli; cat $(LOCAL_OUTPUTS)) > $@
+ 	-cp Output/lli/$(STDOUT_FILENAME).time $@.time
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.out-jit): \
+ Output/%.out-jit: Output/%.llvm.bc $(LLI)
+ 	$(PERFECT_SANDBOX) jit $@ $(REF_IN_DIR) \
+              $(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
+                   $(LLI) $(JIT_OPTS) ../$*.llvm.bc $(RUN_OPTIONS)
+ 	-(cd Output/jit; cat $(LOCAL_OUTPUTS)) > $@
+ 	-cp Output/jit/$(STDOUT_FILENAME).time $@.time
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.out-jit-beta): \
+ Output/%.out-jit-beta: Output/%.llvm.bc $(LLI)
+ 	$(PERFECT_SANDBOX) jit-beta $@ $(REF_IN_DIR) \
+              $(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
+                   $(LLI) $(LLCBETAOPTION) $(JIT_OPTS) ../$*.llvm.bc $(RUN_OPTIONS)
+ 	-(cd Output/jit-beta; cat $(LOCAL_OUTPUTS)) > $@
+ 	-cp Output/jit-beta/$(STDOUT_FILENAME).time $@.time
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.out-llc): \
+ Output/%.out-llc: Output/%.llc
+ 	$(PERFECT_SANDBOX) llc $@ $(REF_IN_DIR) \
+              $(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
+                   ../$*.llc $(RUN_OPTIONS)
+ 	-(cd Output/llc; cat $(LOCAL_OUTPUTS)) > $@
+ 	-cp Output/llc/$(STDOUT_FILENAME).time $@.time
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.out-llc-beta): \
+ Output/%.out-llc-beta: Output/%.llc-beta
+ 	$(PERFECT_SANDBOX) llc-beta $@ $(REF_IN_DIR) \
+              $(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
+                   ../$*.llc-beta $(RUN_OPTIONS)
+ 	-(cd Output/llc-beta; cat $(LOCAL_OUTPUTS)) > $@
+ 	-cp Output/llc-beta/$(STDOUT_FILENAME).time $@.time
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.out-cbe): \
+ Output/%.out-cbe: Output/%.cbe
+ 	$(PERFECT_SANDBOX) cbe $@ $(REF_IN_DIR) \
+              $(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) \
+                   ../$*.cbe $(RUN_OPTIONS)
+ 	-(cd Output/cbe; cat $(LOCAL_OUTPUTS)) > $@
+ 	-cp Output/cbe/$(STDOUT_FILENAME).time $@.time
+ 
+ # perfectify stdin, reference output, and command line options for the program...
+ BUGPOINT_OPTIONS += -input=$(STDIN_FILENAME) -output=../$*.out-nat
+ BUGPOINT_OPTIONS += -timeout=$(RUNTIMELIMIT)
+ BUGPOINT_OPTIONS += --tool-args $(LLCFLAGS)
+ BUGPOINT_ARGS += --args -- $(RUN_OPTIONS)
+ 
+ # Rules to bugpoint the GCCAS, GCCLD, LLC, or LLI commands...
+ $(PROGRAMS_TO_TEST:%=Output/%.bugpoint-gccas): \
+ Output/%.bugpoint-gccas: Output/%.noopt-llvm.bc $(LBUGPOINT) \
+                          Output/gccas-pass-args Output/%.out-nat
+ 	$(PERFECT_SANDBOX) bugpoint $@ $(REF_IN_DIR) \
+ 	    $(LBUGPOINT) ../$*.noopt-llvm.bc `cat Output/gccas-pass-args` $(OPTPASSES) \
+ 	    $(BUGPOINT_OPTIONS) $(BUGPOINT_ARGS)
+ 	@echo "===> Leaving Output/bugpoint"
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.bugpoint-gccld): \
+ Output/%.bugpoint-gccld: Output/%.nogccldopt-llvm.bc $(LBUGPOINT) \
+                          Output/gccld-pass-args Output/%.out-nat
+ 	$(PERFECT_SANDBOX) bugpoint $@ $(REF_IN_DIR) \
+ 	    $(LBUGPOINT) ../$*.nogccldopt-llvm.bc `cat Output/gccld-pass-args` $(OPTPASSES) \
+ 	    $(BUGPOINT_OPTIONS) $(BUGPOINT_ARGS)
+ 	@echo "===> Leaving Output/bugpoint"
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.bugpoint-llc): \
+ Output/%.bugpoint-llc: Output/%.llvm.bc $(LBUGPOINT) Output/%.out-nat
+ 	$(PERFECT_SANDBOX) bugpoint $@ $(REF_IN_DIR) \
+ 	    $(LBUGPOINT) ../$*.llvm.bc -run-llc $(BUGPOINT_OPTIONS) $(BUGPOINT_ARGS)
+ 	@echo "===> Leaving Output/bugpoint"
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.bugpoint-llc-beta): \
+ Output/%.bugpoint-llc-beta: Output/%.llvm.bc $(LBUGPOINT) Output/%.out-nat
+ 	$(PERFECT_SANDBOX) bugpoint $@ $(REF_IN_DIR) \
+ 	    $(LBUGPOINT) ../$*.llvm.bc -run-llc $(BUGPOINT_OPTIONS) \
+ 	    $(LLCBETAOPTION) $(BUGPOINT_ARGS)
+ 	@echo "===> Leaving Output/bugpoint"
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.bugpoint-jit): \
+ Output/%.bugpoint-jit: Output/%.llvm.bc $(LBUGPOINT) Output/%.out-nat
+ 	$(PERFECT_SANDBOX) bugpoint $@ $(REF_IN_DIR) \
+ 	    $(LBUGPOINT) ../$*.llvm.bc -run-jit $(BUGPOINT_OPTIONS) $(BUGPOINT_ARGS)
+ 	@echo "===> Leaving Output/bugpoint"
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.bugpoint-jit-beta): \
+ Output/%.bugpoint-jit-beta: Output/%.llvm.bc $(LBUGPOINT) Output/%.out-nat
+ 	$(PERFECT_SANDBOX) bugpoint $@ $(REF_IN_DIR) \
+ 	    $(LBUGPOINT) ../$*.llvm.bc -run-jit $(BUGPOINT_OPTIONS) \
+ 	    $(LLCBETAOPTION) $(BUGPOINT_ARGS)
+ 	@echo "===> Leaving Output/bugpoint"
+ 
+ 
+ 
+ LIBPROFILESO = $(LLVM_OBJ_ROOT)/Debug/lib/libprofile_rt.so
+ 
+ $(PROGRAMS_TO_TEST:%=Output/%.prof): \
+ Output/%.prof: Output/%.llvm-prof.bc Output/%.out-nat $(LIBPROFILESO)
+ 	@rm -f $@
+ 	$(PERFECT_SANDBOX) profile Output/$*.out-prof $(REF_IN_DIR) \
+ 	  $(RUNSAFELY) $(STDIN_FILENAME) $(STDOUT_FILENAME) $(LLI) $(JIT_OPTS)\
+             -fake-argv0 '../$*.llvm.bc' -load $(LIBPROFILESO) ../../$< -llvmprof-output ../../$@ $(RUN_OPTIONS)
+ 	-(cd Output/profile; cat $(LOCAL_OUTPUTS)) > Output/$*.out-prof
+ 	-cp Output/profile/$(STDOUT_FILENAME).time $@.time
+ 	-cp Output/profile/llvmprof.out $@
+ 	@cmp -s Output/$*.out-prof Output/$*.out-nat || \
+ 		printf "***\n***\n*** WARNING: Output of profiled program (Output/$*.out-prof)\n*** doesn't match the output of the native program (Output/$*.out-nat)!\n***\n***\n";


Index: llvm-test/External/PerfectClub/Sandbox.sh
diff -c /dev/null llvm-test/External/PerfectClub/Sandbox.sh:1.1
*** /dev/null	Sun Apr 24 19:38:47 2005
--- llvm-test/External/PerfectClub/Sandbox.sh	Sun Apr 24 19:38:36 2005
***************
*** 0 ****
--- 1,30 ----
+ #!/bin/sh
+ #
+ # Program:  Sandbox.sh
+ #
+ # Synopsis: This script is used to provide a sandbox for Perfect Club programs
+ #           to execute in.  It provides an isolated environment, the input files
+ #           necessary, and then finally runs the program.
+ #
+ # Syntax:  ./Sandbox.sh <uid> <output_file> <ref input> <program> <arguments>
+ #
+ 
+ TEST_UID=$1
+ OUTPUT_FILE=$2
+ INPUT_DIR=$3
+ shift;shift;shift
+ 
+ mkdir Output/$TEST_UID 2> /dev/null
+ cd Output/$TEST_UID
+ rm -rf *
+ 
+ # Copy all of the test input files into the current directory...
+ cp -r $INPUT_DIR/* .
+ 
+ # Run the program now...
+ echo Running: $*
+ $*
+ 
+ # This script is always successful...
+ exit 0
+ 






More information about the llvm-commits mailing list