@echo mode=$(mode)
@echo jobs=$(jobs)
+
+
+libiomp5_path=$(shell $(omp_root)/tools/check-openmp.pl)
+test_path=$(shell $(omp_root)/tools/check-openmp-test.pl)
+
+# Please do not change this rule.
+# -------------------------------
+# Intentionally changing directory into "testsuite" in order to generate output results and errors
+# over there and keep this directory clean.
+test: omp
+ @$(Verb) if which llvm-lit &> /dev/null; then \
+ if [ -d "$(omp_root)$(SLASH)..$(SLASH)testsuite$(SLASH)LLVM-IR" ] ; then \
+ export TESTSUITE_TEMP=$(realpath $(omp_root))$(SLASH)tmp ; \
+ export LIBRARY_PATH=$(libiomp5_path):$(LIBRARY_PATH) ; \
+ export LD_LIBRARY_PATH=$(libiomp5_path):$(LD_LIBRARY_PATH) ; \
+ export DYLD_LIBRARY_PATH=$(libiomp5_path):$(DYLD_LIBRARY_PATH) ; \
+ cd $(omp_root)$(SLASH)..$(SLASH)testsuite ; \
+ make ctest ; \
+ python adding_xfails.py ; \
+ llvm-lit -j 1 $(realpath $(omp_root))$(SLASH)..$(SLASH)testsuite$(SLASH)LLVM-IR$(SLASH)$(test_path) -v ; \
+ else \
+ echo "No test directory" ; exit 1; \
+ fi; else echo "No llvm-lit in $(PATH)"; exit 1; fi
+
+test-clean:
+ make -C ..$(SLASH)testsuite cleanall
+
+
--- /dev/null
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use FindBin;
+use lib "$FindBin::Bin/lib";
+
+# LIBOMP modules.
+use Build;
+use LibOMP;
+use Platform ":vars";
+use Uname;
+use tools;
+
+my $root_dir = $ENV{ LIBOMP_WORK };
+print join('', $target_platform, "/");
+
--- /dev/null
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use FindBin;
+use lib "$FindBin::Bin/lib";
+
+# LIBOMP modules.
+use Build;
+use LibOMP;
+use Platform ":vars";
+use Uname;
+use tools;
+
+my $root_dir = $ENV{ LIBOMP_WORK };
+print join('', $root_dir, "/", "exports", "/", $target_platform, "/", "lib");
+
--- /dev/null
+# -*- Python -*-
+
+# Configuration file for the 'lit' test runner.
+
+import os
+import sys
+import re
+import platform
+
+try:
+ import lit.util
+ import lit.formats
+except ImportError:
+ pass
+
+# name: The name of this test suite.
+config.name = 'OpenMPValidationSuite'
+
+# testFormat: The test format to use to interpret tests.
+config.test_format = lit.formats.ShTest(execute_external=False)
+
+# suffixes: A list of file extensions to treat as test files
+# Note this can be overridden by lit.local.cfg files
+config.suffixes = ['.ll']
+
+# test_source_root: The root path where tests are located.
+#config.test_source_root = "/home/ichoyjx/install/openmp/testsuite/bin"
+#os.path.dirname(__file__)
+
+# test_exec_root: The root path where tests should be run.
+#mpvs_obj_root = getattr(config, 'mpvs_obj_root', None)
+#if mpvs_obj_root is not None:
+config.test_exec_root = "./"
+#os.path.join(mpvs_obj_root, 'src')
+
+# Discover the 'clang' and 'clangcc' to use.
+
+import os
+
+def inferClang(PATH):
+ # Determine which clang to use.
+ clang = os.getenv('CLANG')
+
+ # If the user set clang in the environment, definitely use that and don't
+ # try to validate.
+ if clang:
+ return clang
+
+ # Otherwise look in the path.
+ clang = lit.util.which('clang', PATH)
+
+ if not clang:
+ lit_config.fatal("couldn't find 'clang' program, try setting "
+ "CLANG in your environment")
+
+ return clang
+
+config.clang = inferClang(config.environment['PATH']).replace('\\', '/')
+config.substitutions.append( ('%clang', ' ' + config.clang + ' ') )
+
+# Propogate some environment variable to test environment.
+def addEnv(name):
+ if name in os.environ:
+ config.environment[name] = os.environ[name]
+
+addEnv('HOME')
+addEnv('PWD')
+
+
+addEnv('C_INCLUDE_PATH')
+addEnv('CPLUS_INCLUDE_PATH')
+addEnv('LIBRARY_PATH')
+addEnv('LD_LIBRARY_PATH')
+addEnv('DYLD_LIBRARY_PATH')
+
+# Check that the object root is known.
+if config.test_exec_root is None:
+ lit.fatal('test execution root not set!')
--- /dev/null
+## Autogenerated by LLVM/Clang configuration.
+#config.mpvs_src_root = "/home/ichoyjx/install/openmp/testsuite/bin/c"
+config.mpvs_obj_root = "/tmp"
+config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
+
+
+# Needed to check if a hack needs to be applied
+config.llvm_version_major = "@LLVM_VERSION_MAJOR@"
+
+# Compilers
+# FIXME: use llvmcc not llvmgcc
+config.llvmclang = "clang"
+
+# Features
+config.enable_uclibc = True if @ENABLE_UCLIBC@ == 1 else False
+config.enable_posix_runtime = True if @ENABLE_POSIX_RUNTIME@ == 1 else False
+config.have_selinux = True if @HAVE_SELINUX@ == 1 else False
+
+# Current target
+config.target_triple = "@TARGET_TRIPLE@"
+
+# Let the main config do the real work.
+try:
+ lit
+except NameError:
+ # Use lit_config class
+ lit_config.load_config(config, "@MPVS_SOURCE_DIR@/lit.cfg")
+else:
+ # Use old lit class
+ lit.load_config(config, "@MPVS_SOURCE_DIR@/lit.cfg")
--- /dev/null
+../LLVM-IR/lin_32e/
# 3. Compiler selection and Flags
#########################################################
-# GNU Compiler
-CC = gcc
-CFLAGS = -fopenmp -lm -O3
-CFLAGS = -fopenmp -lm -O3
+# CLANG Compiler
+CC = clang
+CFLAGS = -fopenmp -S -emit-llvm
FC = gfortran
FFLAGS = -fopenmp -lm
FFLAGS = -fopenmp -lm -O3
+# GNU Compiler
+# CC = gcc
+# CFLAGS = -fopenmp -lm -O3
+# FC = gfortran
+# FFLAGS = -fopenmp -lm
+# FFLAGS = -fopenmp -lm -O3
# Fujitsu Compilers:
#CC = fcc
#FC = uhf90
#FFLAGS = -mp
+# Check path
+FILE=LLVM-IR/lit.tmp
+CHECK_PATH=`cat $(FILE)`
+
#########################################################################
help:
@echo " cleanlogs"
@echo " Remove all *.log files from bin/ directory"
@echo " clean"
- @echo " Remove all sources and executables from bin/ directory"
- @echo " cleanall"
- @echo " Remove the entire bin/ directory"
+ @echo " Clean out and log files"
+ @echo " distclean"
+ @echo " Clean arch test directory with clean"
+ @echo " veryclean"
+ @echo " Remove the entire bin/c directory with distclean"
omp_my_sleep:
mkdir -p bin/c
ctest: omp_my_sleep omp_testsuite
./runtest.pl --lang=c testlist-c.txt
+ cd bin/; make -j
ftest:
mkdir -p bin/fortran
@echo "compilation: $(FC) $(FFLAGS)"
@$(FC) --version
+
+
+path_to_arch=$(shell ../runtime/tools/check-openmp-test.pl)
+
cleansrcs:
- find bin/ -iname "*.[cf]" -exec rm {} \;
+ find bin/ -iname "*.[cf]" -exec rm -rf {} \;
cleanbins:
- find bin/ -perm /a+x -type f -exec rm {} \;
+ find bin/c -perm /a+x -type f -exec rm -rf {} \;
+ find ./bin/c -not -name "*.c" -a -not -name "*.ll" -type f -exec rm -rf {} \;
cleanouts:
- find bin/ -iname "*.out" -exec rm {} \;
+ find bin/ -iname "*.out" -exec rm -rf {} \;
cleanlogs:
- find bin/ -iname "*.log" -exec rm {} \;
+ find bin/ -iname "*.log" -exec rm -rf {} \;
+ rm -rf ./$(path_to_arch)
+
+clean: cleanouts cleanlogs cleanbins cleansrcs
+
+distclean: clean
+ rm -rf bin/c/*
+ rm -rf LLVM-IR/$(CHECK_PATH)
+
+veryclean: distclean
+ rm -rf bin/c/
+ rm -rf bin/fortran/
+
-clean: cleansrcs cleanbins
+cleanall:
+ rm -rf ./bin/c/
+ rm -rf ./bin/fortran/
+ rm -rf ./LLVM-IR/$(path_to_arch)
+ rm -rf ./$(path_to_arch)
+ rm -rf ./*.log
-cleanall:
- rm -rf bin/
--- /dev/null
+ ============================================================================
+| To use the OpenMP Validation Suite for testing |
+| LLVM OpenMP Implementation |
+| High Performance Computing and Tools, |
+| University of Houston |
+| Jan. 2015 |
+ ============================================================================
+
+Two new files have been added to openmp/runtime: check-openmp.pl and check-openmp-test.pl
+Go to /openmp/runtime, run:
+make test
+make test-clean
+
+------------------------------------------------------------------------------
+For the OpenMP-LLVM Project, following are the Files and Directories to know about:
+
+
+ c Directory containing the templates for the c tests
+ fortran Directory containing the templates for the Fortran
+ Makefile Makefile containing options for compilation
+ README_LLVM_OPENMP README file for to use the OpenMP test-suite
+ README_OpenMP_Validation_Suite README file on the Validation Suite, templates, etc.,
+ as a basis for testing the LLVM OpenMP implementation.
+ LLVM_IR Directory containing target-specific IR files
+ bin/lit files In the lit model, every test must exist inside some test suite.
+ lit resolves the inputs specified on the command line to
+ test suites by searching upwards from the input path
+ until it finds a lit.cfg or lit.site.cfg file.
+ These files serve as both a marker of test suites and
+ as configuration files which lit loads in order to
+ understand how to find and run the tests inside the test suite.
+ bin/header Header for the tests, calls clang driver for the test,
+ and executes the resulting executable
+ bin/Makefile To generate LLVM_IR files
+ bin/distribute.sh Generates LLVM_IR files, finds the architecture and OS, moves
+ the generated IR files to the corresponding folder
+ runtime/tools/check-openmp.pl Retrieving the right path
+ runtime/tools/
+ check-openmp-test.pl Returns the architecture and OS, e.g. lin_32e
+------------------------------------------------------------------------------
+
+Contact and Support
+==============================================================================
+
+Contact: http://www.cs.uh.edu/~hpctools/
+Email: sunita@cs.uh.edu
--- /dev/null
+
+import os
+import commands
+
+perl = "/usr/bin/perl"
+LLVM = "./LLVM-IR/"
+temp_filename = "temp"
+XFAIL_text = "; XFAIL: *\n"
+
+
+arch_file_list = dict()
+arch_file_list['lin_32e'] = ['test_omp_task_final.ll', 'test_omp_task_untied.ll']
+
+
+arch_script = "../runtime/tools/check-openmp-test.pl"
+arch_cmd = perl + " " + arch_script
+arch = commands.getoutput(arch_cmd)
+arch = arch[:len(arch)-1]
+
+print "Adding XFAILS ..."
+
+for f in arch_file_list[arch]:
+ filename = LLVM + arch + "/" + f
+ lines = open(filename).readlines()
+ lines.insert(1, XFAIL_text)
+ f2 = open(temp_filename, "w")
+ for l in lines:
+ f2.write(l)
+ f2.close()
+
+ os.system("mv " + temp_filename + " " + filename)
+
--- /dev/null
+CC = clang
+CFLAGS = -fopenmp -S -emit-llvm
+INCL =
+LIBS =
+
+BIN =
+SRC_DIR = ./c
+SRC_FILES := $(foreach DIR, $(SRC_DIR), $(wildcard $(SRC_DIR)/*.c))
+OBJS := $(patsubst %.c, %.o, $(SRC_FILES))
+TARGETLIST := $(patsubst %.c, %, $(SRC_FILES))
+
+all:$(TARGETLIST)
+ ./distribute.sh
+ @ echo all done
+
+.PHONY: clean
+
+$(TARGETLIST): $(SRC_FILES)
+ $(CC) $(CFLAGS) $(LIBS) $(INCL) $@.c -o $@.ll
+
+clean:
+ @ rm -rf c/*
+ @ echo clean bin done
--- /dev/null
+#!/bin/bash
+
+# add header for .ll files
+
+# get tmp header
+cp header /tmp/tmp.header
+echo >> /tmp/tmp.header
+
+# create temporary test package
+mkdir c-$MACHTYPE$OSTYPE
+`cp c/*.ll c-$MACHTYPE$OSTYPE/`
+
+# add new header into .ll files
+for file in c-$MACHTYPE$OSTYPE/*
+do
+ cp $file /tmp/tmp.ll.bf
+ cat /tmp/tmp.header /tmp/tmp.ll.bf > /tmp/tmp.ll
+ mv /tmp/tmp.ll $file
+done
+
+
+# in bin/, target is ../LLVM-IR/ARCH/OS
+LEVEL=../LLVM-IR/
+ARCH_PATH=../LLVM-IR/
+OS_PATH=../LLVM-IR/
+
+# for linux system, add your arch and os here
+declare -a ARCHes=(x86 x86_64 powerpc arm mips darwin)
+declare -a OSes=(linux macosx windows darwin)
+
+declare lowerARCH
+declare lowerOS
+
+# target directory name
+declare upperARCH
+declare upperOS
+
+lowerARCH=$(echo "$MACHTYPE" | tr '[:upper:]' '[:lower:]')
+lowerOS=$(echo "$OSTYPE" | tr '[:upper:]' '[:lower:]')
+
+# ARCH
+for i in ${ARCHes[@]}
+do
+ result=$(echo "${lowerARCH}" | grep $i)
+ if [[ "$result" != "" ]]
+ then
+ # upperARCH=$i
+ upperARCH=$(echo "$i" | tr '[:lower:]' '[:upper:]')
+ fi
+done
+
+if [[ "$upperARCH" == "" ]]
+then
+ echo "Not found ${lowerARCH} in the [${ARCHes[@]}]!"
+ exit
+fi
+
+# OS
+for i in ${OSes[@]}
+do
+ result=$(echo "${lowerOS}" | grep $i)
+ if [[ "$result" != "" ]]
+ then
+ # upperOS=$i
+ upperOS=$(echo "$i" | tr '[:lower:]' '[:upper:]')
+ fi
+done
+
+if [[ "$upperOS" == "" ]]
+then
+ echo "Not found ${lowerOS} in the [${OSes[@]}]!"
+ exit
+fi
+
+# survived, assemble the path
+# ARCH_PATH+=$upperARCH/
+# OS_PATH+=$upperARCH/$upperOS/
+ARCH_newFormat=.
+if [ $upperARCH = "X86" ]; then
+ ARCH_newFormat=32
+else
+ ARCH_newFormat=32e
+fi
+OS_newFormat=.
+if [ $upperOS = "LINUX" ]; then
+ OS_newFormat=lin
+elif [ $upperOS = "MACOSX" ]; then
+ OS_newFormat=mac
+elif [ $upperOS = "WINDOWS" ]; then
+ OS_newFormat=win
+elif [ $upperOS = "DARWIN" ]; then
+ OS_newFormat=dar
+else
+ OS_newFormat=unknown
+fi
+OS_PATH+=$OS_newFormat"_"$ARCH_newFormat
+
+# test and create directory
+if [ ! -d "$LEVEL" ]; then
+ mkdir $LEVEL
+ mkdir $OS_PATH
+else
+ if [ ! -d "$OS_PATH" ]; then
+ mkdir $OS_PATH
+ fi
+fi
+
+# reserve the tmp path to LLVM-IR/ARCH/OS
+echo $OS_PATH"/" > lit.tmp
+
+# OS_ARCH=$OS_newFormat"_"$ARCH_newFormat
+# echo -e "if not '$OS_ARCH' in config.root.targets:" > $OS_PATH'/'lit.local.cfg
+# echo -e "\tconfig.unsupported = True" >> $OS_PATH'/'lit.local.cfg
+
+# copy *.ll files to ARCH/OS
+`cp lit.* $LEVEL`
+
+# omit orph test
+`rm c-$MACHTYPE$OSTYPE/ctest_*.ll`
+`rm c-$MACHTYPE$OSTYPE/orph_ctest_*.ll`
+`cp c-$MACHTYPE$OSTYPE/*.ll $OS_PATH`
+
+# clean
+`rm /tmp/tmp.*`
+rm -rf c-$MACHTYPE$OSTYPE/
--- /dev/null
+; RUN: %clang -liomp5 -lm %s -o %t && %t 2>&1 | FileCheck %s
+; CHECK-NOT: Test failed
+; CHECK: Directive worked without errors
+
+
+
--- /dev/null
+# -*- Python -*-
+
+# Configuration file for the 'lit' test runner.
+
+import os
+import sys
+import re
+import platform
+
+try:
+ import lit.util
+ import lit.formats
+except ImportError:
+ pass
+
+# name: The name of this test suite.
+config.name = 'OpenMPValidationSuite'
+
+# testFormat: The test format to use to interpret tests.
+config.test_format = lit.formats.ShTest(execute_external=False)
+
+# suffixes: A list of file extensions to treat as test files
+# Note this can be overridden by lit.local.cfg files
+config.suffixes = ['.ll']
+
+# test_source_root: The root path where tests are located.
+#config.test_source_root = "/home/ichoyjx/install/openmp/testsuite/bin"
+#os.path.dirname(__file__)
+
+# test_exec_root: The root path where tests should be run.
+#mpvs_obj_root = getattr(config, 'mpvs_obj_root', None)
+#if mpvs_obj_root is not None:
+config.test_exec_root = "./"
+#os.path.join(mpvs_obj_root, 'src')
+
+# Discover the 'clang' and 'clangcc' to use.
+
+import os
+
+def inferClang(PATH):
+ # Determine which clang to use.
+ clang = os.getenv('CLANG')
+
+ # If the user set clang in the environment, definitely use that and don't
+ # try to validate.
+ if clang:
+ return clang
+
+ # Otherwise look in the path.
+ clang = lit.util.which('clang', PATH)
+
+ if not clang:
+ lit_config.fatal("couldn't find 'clang' program, try setting "
+ "CLANG in your environment")
+
+ return clang
+
+config.clang = inferClang(config.environment['PATH']).replace('\\', '/')
+config.substitutions.append( ('%clang', ' ' + config.clang + ' ') )
+
+# Propogate some environment variable to test environment.
+def addEnv(name):
+ if name in os.environ:
+ config.environment[name] = os.environ[name]
+
+addEnv('HOME')
+addEnv('PWD')
+
+
+addEnv('C_INCLUDE_PATH')
+addEnv('CPLUS_INCLUDE_PATH')
+addEnv('LIBRARY_PATH')
+addEnv('LD_LIBRARY_PATH')
+addEnv('DYLD_LIBRARY_PATH')
+
+# Check that the object root is known.
+if config.test_exec_root is None:
+ lit.fatal('test execution root not set!')
--- /dev/null
+## Autogenerated by LLVM/Clang configuration.
+#config.mpvs_src_root = "/home/ichoyjx/install/openmp/testsuite/bin/c"
+config.mpvs_obj_root = "/tmp"
+config.llvm_tools_dir = "@LLVM_TOOLS_DIR@"
+
+
+# Needed to check if a hack needs to be applied
+config.llvm_version_major = "@LLVM_VERSION_MAJOR@"
+
+# Compilers
+# FIXME: use llvmcc not llvmgcc
+config.llvmclang = "clang"
+
+# Features
+config.enable_uclibc = True if @ENABLE_UCLIBC@ == 1 else False
+config.enable_posix_runtime = True if @ENABLE_POSIX_RUNTIME@ == 1 else False
+config.have_selinux = True if @HAVE_SELINUX@ == 1 else False
+
+# Current target
+config.target_triple = "@TARGET_TRIPLE@"
+
+# Let the main config do the real work.
+try:
+ lit
+except NameError:
+ # Use lit_config class
+ lit_config.load_config(config, "@MPVS_SOURCE_DIR@/lit.cfg")
+else:
+ # Use old lit class
+ lit.load_config(config, "@MPVS_SOURCE_DIR@/lit.cfg")
--- /dev/null
+../LLVM-IR/lin_32e/
+++ /dev/null
-# Add custom tests in this list
-omp_parallel_copyin
/**********************************************************/
#define NUM_TASKS 25
#define MAX_TASKS_PER_THREAD 5
-int test_omp_nested(FILE * logfile); /* Test for omp_nested */
-int crosstest_omp_nested(FILE * logfile); /* Crosstest for omp_nested */
-int test_omp_nest_lock(FILE * logfile); /* Test for omp_nest_lock */
-int crosstest_omp_nest_lock(FILE * logfile); /* Crosstest for omp_nest_lock */
-int test_omp_task_if(FILE * logfile); /* Test for omp task if */
-int crosstest_omp_task_if(FILE * logfile); /* Crosstest for omp task if */
+int test_omp_parallel_for_ordered(FILE * logfile); /* Test for omp parallel for ordered */
+int crosstest_omp_parallel_for_ordered(FILE * logfile); /* Crosstest for omp parallel for ordered */
+int test_omp_task_imp_firstprivate(FILE * logfile); /* Test for omp task */
+int crosstest_omp_task_imp_firstprivate(FILE * logfile); /* Crosstest for omp task */
+int test_omp_taskwait(FILE * logfile); /* Test for omp taskwait */
+int crosstest_omp_taskwait(FILE * logfile); /* Crosstest for omp taskwait */
+int test_omp_barrier(FILE * logfile); /* Test for omp barrier */
+int crosstest_omp_barrier(FILE * logfile); /* Crosstest for omp barrier */
+int test_omp_parallel_for_if(FILE * logfile); /* Test for omp parallel for if */
+int crosstest_omp_parallel_for_if(FILE * logfile); /* Crosstest for omp parallel for if */
+int test_omp_atomic(FILE * logfile); /* Test for omp atomic */
+int crosstest_omp_atomic(FILE * logfile); /* Crosstest for omp atomic */
+int test_omp_get_num_threads(FILE * logfile); /* Test for omp_get_num_threads */
+int crosstest_omp_get_num_threads(FILE * logfile); /* Crosstest for omp_get_num_threads */
+int test_omp_section_private(FILE * logfile); /* Test for omp section private */
+int crosstest_omp_section_private(FILE * logfile); /* Crosstest for omp section private */
+int test_omp_parallel_if(FILE * logfile); /* Test for omp parallel if */
+int crosstest_omp_parallel_if(FILE * logfile); /* Crosstest for omp parallel if */
+int test_omp_lock(FILE * logfile); /* Test for omp_lock */
+int crosstest_omp_lock(FILE * logfile); /* Crosstest for omp_lock */
int test_omp_parallel_shared(FILE * logfile); /* Test for omp parallel shared */
int crosstest_omp_parallel_shared(FILE * logfile); /* Crosstest for omp parallel shared */
+int test_omp_task_imp_shared(FILE * logfile); /* Test for omp task */
+int crosstest_omp_task_imp_shared(FILE * logfile); /* Crosstest for omp task */
+int test_omp_task_private(FILE * logfile); /* Test for omp task private */
+int crosstest_omp_task_private(FILE * logfile); /* Crosstest for omp task private */
+int test_omp_section_lastprivate(FILE * logfile); /* Test for omp section lastprivate */
+int crosstest_omp_section_lastprivate(FILE * logfile); /* Crosstest for omp section lastprivate */
+int test_omp_parallel_firstprivate(FILE * logfile); /* Test for omp parallel firstprivate */
+int crosstest_omp_parallel_firstprivate(FILE * logfile); /* Crosstest for omp parallel firstprivate */
+int test_omp_for_auto(FILE * logfile); /* Test for omp for auto */
+int crosstest_omp_for_auto(FILE * logfile); /* Crosstest for omp for auto */
+int test_omp_for_schedule_static(FILE * logfile); /* Test for omp for schedule(static) */
+int crosstest_omp_for_schedule_static(FILE * logfile); /* Crosstest for omp for schedule(static) */
+int test_omp_threadprivate_for(FILE * logfile); /* Test for omp threadprivate */
+int crosstest_omp_threadprivate_for(FILE * logfile); /* Crosstest for omp threadprivate */
+int test_omp_task_untied(FILE * logfile); /* Test for omp task untied */
+int crosstest_omp_task_untied(FILE * logfile); /* Crosstest for omp task untied */
+int test_omp_parallel_private(FILE * logfile); /* Test for omp parallel private */
+int crosstest_omp_parallel_private(FILE * logfile); /* Crosstest for omp parallel private */
+int test_omp_single_nowait(FILE * logfile); /* Test for omp single nowait */
+int crosstest_omp_single_nowait(FILE * logfile); /* Crosstest for omp single nowait */
+int test_omp_critical(FILE * logfile); /* Test for omp critical */
+int crosstest_omp_critical(FILE * logfile); /* Crosstest for omp critical */
+int test_omp_get_wtick(FILE * logfile); /* Test for omp_get_wtick */
+int crosstest_omp_get_wtick(FILE * logfile); /* Crosstest for omp_get_wtick */
int test_omp_single(FILE * logfile); /* Test for omp single */
int crosstest_omp_single(FILE * logfile); /* Crosstest for omp single */
int test_omp_parallel_sections_reduction(FILE * logfile); /* Test for omp parallel sections reduction */
int crosstest_omp_parallel_sections_reduction(FILE * logfile); /* Crosstest for omp parallel sections reduction */
-int test_omp_for_schedule_dynamic(FILE * logfile); /* Test for omp for schedule(dynamic) */
-int crosstest_omp_for_schedule_dynamic(FILE * logfile); /* Crosstest for omp for schedule(dynamic) */
+int test_omp_taskyield(FILE * logfile); /* Test for omp taskyield */
+int crosstest_omp_taskyield(FILE * logfile); /* Crosstest for omp taskyield */
int test_has_openmp(FILE * logfile); /* Test for _OPENMP */
int crosstest_has_openmp(FILE * logfile); /* Crosstest for _OPENMP */
-int test_omp_taskwait(FILE * logfile); /* Test for omp taskwait */
-int crosstest_omp_taskwait(FILE * logfile); /* Crosstest for omp taskwait */
int test_omp_parallel_for_lastprivate(FILE * logfile); /* Test for omp parallel for lastprivate */
int crosstest_omp_parallel_for_lastprivate(FILE * logfile); /* Crosstest for omp parallel for lastprivate */
-int test_omp_for_schedule_static_3(FILE * logfile); /* Test for omp for schedule(static) */
-int crosstest_omp_for_schedule_static_3(FILE * logfile); /* Crosstest for omp for schedule(static) */
-int test_omp_critical(FILE * logfile); /* Test for omp critical */
-int crosstest_omp_critical(FILE * logfile); /* Crosstest for omp critical */
int test_omp_parallel_sections_lastprivate(FILE * logfile); /* Test for omp parallel sections lastprivate */
int crosstest_omp_parallel_sections_lastprivate(FILE * logfile); /* Crosstest for omp parallel sections lastprivate */
+int test_omp_for_lastprivate(FILE * logfile); /* Test for omp for lastprivate */
+int crosstest_omp_for_lastprivate(FILE * logfile); /* Crosstest for omp for lastprivate */
+int test_omp_parallel_sections_firstprivate(FILE * logfile); /* Test for omp parallel sections firstprivate */
+int crosstest_omp_parallel_sections_firstprivate(FILE * logfile); /* Crosstest for omp parallel sections firstprivate */
+int test_omp_parallel_for_reduction(FILE * logfile); /* Test for omp parallel for reduction */
+int crosstest_omp_parallel_for_reduction(FILE * logfile); /* Crosstest for omp parallel for reduction */
+int test_omp_test_lock(FILE * logfile); /* Test for omp_test_lock */
+int crosstest_omp_test_lock(FILE * logfile); /* Crosstest for omp_test_lock */
+int test_omp_parallel_for_firstprivate(FILE * logfile); /* Test for omp parallel for firstprivate */
+int crosstest_omp_parallel_for_firstprivate(FILE * logfile); /* Crosstest for omp parallel for firstprivate */
+int test_omp_parallel_sections_private(FILE * logfile); /* Test for omp parallel sections private */
+int crosstest_omp_parallel_sections_private(FILE * logfile); /* Crosstest for omp parallel sections private */
int test_omp_parallel_num_threads(FILE * logfile); /* Test for omp parellel num_threads */
int crosstest_omp_parallel_num_threads(FILE * logfile); /* Crosstest for omp parellel num_threads */
+int test_omp_for_reduction(FILE * logfile); /* Test for omp for reduction */
+int crosstest_omp_for_reduction(FILE * logfile); /* Crosstest for omp for reduction */
+int test_omp_sections_nowait(FILE * logfile); /* Test for omp parallel sections nowait */
+int crosstest_omp_sections_nowait(FILE * logfile); /* Crosstest for omp parallel sections nowait */
+int test_omp_parallel_reduction(FILE * logfile); /* Test for omp parallel reduction */
+int crosstest_omp_parallel_reduction(FILE * logfile); /* Crosstest for omp parallel reduction */
+int test_omp_nested(FILE * logfile); /* Test for omp_nested */
+int crosstest_omp_nested(FILE * logfile); /* Crosstest for omp_nested */
+int test_omp_threadprivate(FILE * logfile); /* Test for omp threadprivate */
+int crosstest_omp_threadprivate(FILE * logfile); /* Crosstest for omp threadprivate */
int test_omp_sections_reduction(FILE * logfile); /* Test for omp sections reduction */
int crosstest_omp_sections_reduction(FILE * logfile); /* Crosstest for omp sections reduction */
-int test_omp_parallel_if(FILE * logfile); /* Test for omp parallel if */
-int crosstest_omp_parallel_if(FILE * logfile); /* Crosstest for omp parallel if */
-int test_omp_task_imp_shared(FILE * logfile); /* Test for omp task */
-int crosstest_omp_task_imp_shared(FILE * logfile); /* Crosstest for omp task */
-int test_omp_section_lastprivate(FILE * logfile); /* Test for omp section lastprivate */
-int crosstest_omp_section_lastprivate(FILE * logfile); /* Crosstest for omp section lastprivate */
-int test_omp_for_collapse(FILE * logfile); /* Test for omp for collapse */
-int crosstest_omp_for_collapse(FILE * logfile); /* Crosstest for omp for collapse */
-int test_omp_parallel_for_firstprivate(FILE * logfile); /* Test for omp parallel for firstprivate */
-int crosstest_omp_parallel_for_firstprivate(FILE * logfile); /* Crosstest for omp parallel for firstprivate */
-int test_omp_parallel_copyin(FILE * logfile); /* Test for omp parallel copyin */
-int crosstest_omp_parallel_copyin(FILE * logfile); /* Crosstest for omp parallel copyin */
-int test_omp_test_nest_lock(FILE * logfile); /* Test for omp_test_nest_lock */
-int crosstest_omp_test_nest_lock(FILE * logfile); /* Crosstest for omp_test_nest_lock */
+int test_omp_for_schedule_guided(FILE * logfile); /* Test for omp for schedule(guided) */
+int crosstest_omp_for_schedule_guided(FILE * logfile); /* Crosstest for omp for schedule(guided) */
+int test_omp_task_final(FILE * logfile); /* Test for omp task final */
+int crosstest_omp_task_final(FILE * logfile); /* Crosstest for omp task final */
+int test_omp_parallel_for_private(FILE * logfile); /* Test for omp parallel for private */
+int crosstest_omp_parallel_for_private(FILE * logfile); /* Crosstest for omp parallel for private */
+int test_omp_flush(FILE * logfile); /* Test for omp flush */
+int crosstest_omp_flush(FILE * logfile); /* Crosstest for omp flush */
+int test_omp_for_private(FILE * logfile); /* Test for omp for private */
+int crosstest_omp_for_private(FILE * logfile); /* Crosstest for omp for private */
int test_omp_for_ordered(FILE * logfile); /* Test for omp for ordered */
int crosstest_omp_for_ordered(FILE * logfile); /* Crosstest for omp for ordered */
-int test_omp_parallel_reduction(FILE * logfile); /* Test for omp parallel reduction */
-int crosstest_omp_parallel_reduction(FILE * logfile); /* Crosstest for omp parallel reduction */
-int test_omp_get_wtick(FILE * logfile); /* Test for omp_get_wtick */
-int crosstest_omp_get_wtick(FILE * logfile); /* Crosstest for omp_get_wtick */
-int test_omp_taskyield(FILE * logfile); /* Test for omp taskyield */
-int crosstest_omp_taskyield(FILE * logfile); /* Crosstest for omp taskyield */
-int test_omp_for_schedule_static(FILE * logfile); /* Test for omp for schedule(static) */
-int crosstest_omp_for_schedule_static(FILE * logfile); /* Crosstest for omp for schedule(static) */
-int test_omp_single_private(FILE * logfile); /* Test for omp singel private */
-int crosstest_omp_single_private(FILE * logfile); /* Crosstest for omp singel private */
-int test_omp_for_firstprivate(FILE * logfile); /* Test for omp for firstprivate */
-int crosstest_omp_for_firstprivate(FILE * logfile); /* Crosstest for omp for firstprivate */
-int test_omp_parallel_for_reduction(FILE * logfile); /* Test for omp parallel for reduction */
-int crosstest_omp_parallel_for_reduction(FILE * logfile); /* Crosstest for omp parallel for reduction */
-int test_omp_parallel_for_if(FILE * logfile); /* Test for omp parallel for if */
-int crosstest_omp_parallel_for_if(FILE * logfile); /* Crosstest for omp parallel for if */
-int test_omp_single_nowait(FILE * logfile); /* Test for omp single nowait */
-int crosstest_omp_single_nowait(FILE * logfile); /* Crosstest for omp single nowait */
-int test_omp_task_firstprivate(FILE * logfile); /* Test for omp task firstprivate */
-int crosstest_omp_task_firstprivate(FILE * logfile); /* Crosstest for omp task firstprivate */
-int test_omp_for_nowait(FILE * logfile); /* Test for omp parallel for nowait */
-int crosstest_omp_for_nowait(FILE * logfile); /* Crosstest for omp parallel for nowait */
-int test_omp_task_private(FILE * logfile); /* Test for omp task private */
-int crosstest_omp_task_private(FILE * logfile); /* Crosstest for omp task private */
-int test_omp_test_lock(FILE * logfile); /* Test for omp_test_lock */
-int crosstest_omp_test_lock(FILE * logfile); /* Crosstest for omp_test_lock */
-int test_omp_get_wtime(FILE * logfile); /* Test for omp_get_wtime */
-int crosstest_omp_get_wtime(FILE * logfile); /* Crosstest for omp_get_wtime */
-int test_omp_task_imp_firstprivate(FILE * logfile); /* Test for omp task */
-int crosstest_omp_task_imp_firstprivate(FILE * logfile); /* Crosstest for omp task */
-int test_omp_atomic(FILE * logfile); /* Test for omp atomic */
-int crosstest_omp_atomic(FILE * logfile); /* Crosstest for omp atomic */
-int test_omp_threadprivate_for(FILE * logfile); /* Test for omp threadprivate */
-int crosstest_omp_threadprivate_for(FILE * logfile); /* Crosstest for omp threadprivate */
int test_omp_single_copyprivate(FILE * logfile); /* Test for omp single copyprivate */
int crosstest_omp_single_copyprivate(FILE * logfile); /* Crosstest for omp single copyprivate */
+int test_omp_task_if(FILE * logfile); /* Test for omp task if */
+int crosstest_omp_task_if(FILE * logfile); /* Crosstest for omp task if */
+int test_omp_section_firstprivate(FILE * logfile); /* Test for omp firstprivate */
+int crosstest_omp_section_firstprivate(FILE * logfile); /* Crosstest for omp firstprivate */
+int test_omp_for_schedule_static_3(FILE * logfile); /* Test for omp for schedule(static) */
+int crosstest_omp_for_schedule_static_3(FILE * logfile); /* Crosstest for omp for schedule(static) */
+int test_omp_task_firstprivate(FILE * logfile); /* Test for omp task firstprivate */
+int crosstest_omp_task_firstprivate(FILE * logfile); /* Crosstest for omp task firstprivate */
+int test_omp_for_collapse(FILE * logfile); /* Test for omp for collapse */
+int crosstest_omp_for_collapse(FILE * logfile); /* Crosstest for omp for collapse */
+int test_omp_in_parallel(FILE * logfile); /* Test for omp_in_parallel */
+int crosstest_omp_in_parallel(FILE * logfile); /* Crosstest for omp_in_parallel */
+int test_omp_for_schedule_dynamic(FILE * logfile); /* Test for omp for schedule(dynamic) */
+int crosstest_omp_for_schedule_dynamic(FILE * logfile); /* Crosstest for omp for schedule(dynamic) */
+int test_omp_for_firstprivate(FILE * logfile); /* Test for omp for firstprivate */
+int crosstest_omp_for_firstprivate(FILE * logfile); /* Crosstest for omp for firstprivate */
int test_omp_master(FILE * logfile); /* Test for omp master */
int crosstest_omp_master(FILE * logfile); /* Crosstest for omp master */
-int test_omp_parallel_firstprivate(FILE * logfile); /* Test for omp parallel firstprivate */
-int crosstest_omp_parallel_firstprivate(FILE * logfile); /* Crosstest for omp parallel firstprivate */
-int test_omp_parallel_for_private(FILE * logfile); /* Test for omp parallel for private */
-int crosstest_omp_parallel_for_private(FILE * logfile); /* Crosstest for omp parallel for private */
+int test_omp_single_private(FILE * logfile); /* Test for omp singel private */
+int crosstest_omp_single_private(FILE * logfile); /* Crosstest for omp singel private */
+int test_omp_task(FILE * logfile); /* Test for omp task */
+int crosstest_omp_task(FILE * logfile); /* Crosstest for omp task */
int test_omp_parallel_default(FILE * logfile); /* Test for omp parallel default */
int crosstest_omp_parallel_default(FILE * logfile); /* Crosstest for omp parallel default */
-int test_omp_parallel_for_ordered(FILE * logfile); /* Test for omp parallel for ordered */
-int crosstest_omp_parallel_for_ordered(FILE * logfile); /* Crosstest for omp parallel for ordered */
-int test_omp_for_lastprivate(FILE * logfile); /* Test for omp for lastprivate */
-int crosstest_omp_for_lastprivate(FILE * logfile); /* Crosstest for omp for lastprivate */
-int test_omp_lock(FILE * logfile); /* Test for omp_lock */
-int crosstest_omp_lock(FILE * logfile); /* Crosstest for omp_lock */
-int test_omp_barrier(FILE * logfile); /* Test for omp barrier */
-int crosstest_omp_barrier(FILE * logfile); /* Crosstest for omp barrier */
-int test_omp_sections_nowait(FILE * logfile); /* Test for omp parallel sections nowait */
-int crosstest_omp_sections_nowait(FILE * logfile); /* Crosstest for omp parallel sections nowait */
+int test_omp_for_nowait(FILE * logfile); /* Test for omp parallel for nowait */
+int crosstest_omp_for_nowait(FILE * logfile); /* Crosstest for omp parallel for nowait */
+int test_omp_test_nest_lock(FILE * logfile); /* Test for omp_test_nest_lock */
+int crosstest_omp_test_nest_lock(FILE * logfile); /* Crosstest for omp_test_nest_lock */
+int test_omp_nest_lock(FILE * logfile); /* Test for omp_nest_lock */
+int crosstest_omp_nest_lock(FILE * logfile); /* Crosstest for omp_nest_lock */
+int test_omp_parallel_copyin(FILE * logfile); /* Test for omp parallel copyin */
+int crosstest_omp_parallel_copyin(FILE * logfile); /* Crosstest for omp parallel copyin */
int test_omp_master_3(FILE * logfile); /* Test for omp master */
int crosstest_omp_master_3(FILE * logfile); /* Crosstest for omp master */
-int test_omp_task_untied(FILE * logfile); /* Test for omp task untied */
-int crosstest_omp_task_untied(FILE * logfile); /* Crosstest for omp task untied */
-int test_omp_task(FILE * logfile); /* Test for omp task */
-int crosstest_omp_task(FILE * logfile); /* Crosstest for omp task */
-int test_omp_in_parallel(FILE * logfile); /* Test for omp_in_parallel */
-int crosstest_omp_in_parallel(FILE * logfile); /* Crosstest for omp_in_parallel */
-int test_omp_parallel_sections_firstprivate(FILE * logfile); /* Test for omp parallel sections firstprivate */
-int crosstest_omp_parallel_sections_firstprivate(FILE * logfile); /* Crosstest for omp parallel sections firstprivate */
-int test_omp_for_auto(FILE * logfile); /* Test for omp for auto */
-int crosstest_omp_for_auto(FILE * logfile); /* Crosstest for omp for auto */
-int test_omp_task_final(FILE * logfile); /* Test for omp task final */
-int crosstest_omp_task_final(FILE * logfile); /* Crosstest for omp task final */
-int test_omp_section_private(FILE * logfile); /* Test for omp section private */
-int crosstest_omp_section_private(FILE * logfile); /* Crosstest for omp section private */
-int test_omp_parallel_sections_private(FILE * logfile); /* Test for omp parallel sections private */
-int crosstest_omp_parallel_sections_private(FILE * logfile); /* Crosstest for omp parallel sections private */
-int test_omp_for_reduction(FILE * logfile); /* Test for omp for reduction */
-int crosstest_omp_for_reduction(FILE * logfile); /* Crosstest for omp for reduction */
-int test_omp_for_private(FILE * logfile); /* Test for omp for private */
-int crosstest_omp_for_private(FILE * logfile); /* Crosstest for omp for private */
-int test_omp_flush(FILE * logfile); /* Test for omp flush */
-int crosstest_omp_flush(FILE * logfile); /* Crosstest for omp flush */
-int test_omp_parallel_private(FILE * logfile); /* Test for omp parallel private */
-int crosstest_omp_parallel_private(FILE * logfile); /* Crosstest for omp parallel private */
-int test_omp_threadprivate(FILE * logfile); /* Test for omp threadprivate */
-int crosstest_omp_threadprivate(FILE * logfile); /* Crosstest for omp threadprivate */
-int test_omp_section_firstprivate(FILE * logfile); /* Test for omp firstprivate */
-int crosstest_omp_section_firstprivate(FILE * logfile); /* Crosstest for omp firstprivate */
-int test_omp_for_schedule_guided(FILE * logfile); /* Test for omp for schedule(guided) */
-int crosstest_omp_for_schedule_guided(FILE * logfile); /* Crosstest for omp for schedule(guided) */
-int test_omp_get_num_threads(FILE * logfile); /* Test for omp_get_num_threads */
-int crosstest_omp_get_num_threads(FILE * logfile); /* Crosstest for omp_get_num_threads */
+int test_omp_get_wtime(FILE * logfile); /* Test for omp_get_wtime */
+int crosstest_omp_get_wtime(FILE * logfile); /* Crosstest for omp_get_wtime */
#endif
int failed=0; /* Number of failed tests */
int success=0; /* number of succeeded tests */
static FILE * logFile; /* pointer onto the logfile */
- static const char * logFileName = "bin/c/<testfunctionname></testfunctionname>.log"; /* name of the logfile */
+ static const char * logFileName = "<testfunctionname></testfunctionname>.log"; /* name of the logfile */
/* Open a new Logfile or overwrite the existing one. */