BLASDIRS += kernel
endif
+ifdef UTEST_CHECK
+SANITY_CHECK = 1
+endif
+
ifdef SANITY_CHECK
BLASDIRS += reference
endif
SUBDIRS = $(BLASDIRS) lapack
-SUBDIRS_ALL = $(SUBDIRS) test ctest exports benchmark ../laswp ../bench
+SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench
.PHONY : all libs netlib test ctest shared
.NOTPARALLEL : all libs prof lapack-test
touch $(LIBNAME)
ifndef NO_FBLAS
$(MAKE) -C test all
+ifdef UTEST_CHECK
+ $(MAKE) -C utest all
+endif
endif
ifndef NO_CBLAS
$(MAKE) -C ctest all
# slow (Not implemented yet).
# SANITY_CHECK = 1
+# Run testcases in utest/ . When you enable UTEST_CHECK, it would enable
+# SANITY_CHECK to compare the result with reference BLAS.
+# UTEST_CHECK = 1
+
# Common Optimization Flag; -O2 is enough.
COMMON_OPT += -O2
endif
endif
+ifdef UTEST_CHECK
+CCOMMON_OPT += -DUTEST_CHECK
+SANITY_CHECK = 1
+endif
+
ifdef SANITY_CHECK
CCOMMON_OPT += -DSANITY_CHECK -DREFNAME=$(*F)f$(BU)
endif
+/*****************************************************************************
+Copyright (c) 2011, Lab of Parallel Software and Computational Science,ICSAS
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. Neither the name of the ISCAS nor the names of its contributors may
+ be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+**********************************************************************************/
+#ifndef ASSEMBLER
+
+#define REF_BU f
+#define BLASFUNC_REF_2(x,y) BLASFUNC(x## y)
+#define BLASFUNC_REF_1(x,y) BLASFUNC_REF_2(x,y)
+#define BLASFUNC_REF(x) BLASFUNC_REF_1(x,REF_BU)
+
+void BLASFUNC_REF(srot) (blasint *, float *, blasint *, float *, blasint *, float *, float *);
+void BLASFUNC_REF(drot) (blasint *, double *, blasint *, double *, blasint *, double *, double *);
+void BLASFUNC_REF(qrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *);
+void BLASFUNC_REF(csrot) (blasint *, float *, blasint *, float *, blasint *, float *, float *);
+void BLASFUNC_REF(zdrot) (blasint *, double *, blasint *, double *, blasint *, double *, double *);
+void BLASFUNC_REF(xqrot) (blasint *, xdouble *, blasint *, xdouble *, blasint *, xdouble *, xdouble *);
+
+#endif
--- /dev/null
+UTEST_CHECK = 1
+TOPDIR = ..
+include $(TOPDIR)/Makefile.system
+
+TARGET=openblas_utest
+CUNIT_LIB=/usr/local/lib/libcunit.a
+
+OBJS=main.o test_rot.o
+
+all : run_test
+
+$(TARGET): $(OBJS)
+ $(CC) -o $@ $^ ../$(LIBNAME) $(CUNIT_LIB)
+
+run_test: $(TARGET)
+ ./$(TARGET)
+
+clean:
+ rm -f *.o $(TARGET)
+
+libs:
+
--- /dev/null
+/*****************************************************************************
+Copyright (c) 2011, Lab of Parallel Software and Computational Science,ICSAS
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. Neither the name of the ISCAS nor the names of its contributors may
+ be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+**********************************************************************************/
+
+#ifndef COMMON_UTEST_H_
+#define COMMON_UTEST_H_
+#include <CUnit/CUnit.h>
+
+#include <common.h>
+
+#define CHECK_EPS 0.0002
+
+//Testcase list
+void test_drot_incx_0(void);
+
+#endif
--- /dev/null
+/*****************************************************************************
+Copyright (c) 2011, Lab of Parallel Software and Computational Science,ICSAS
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. Neither the name of the ISCAS nor the names of its contributors may
+ be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+**********************************************************************************/
+
+#include <stdio.h>
+#include <string.h>
+
+
+#include "common_utest.h"
+#include <CUnit/Basic.h>
+
+CU_TestInfo test_level1[]={
+ {"Testing drot when incx & incy == 0",test_drot_incx_0},
+ CU_TEST_INFO_NULL,
+};
+
+CU_SuiteInfo suites[]={
+ {"Level1 Test Suite", NULL,NULL,test_level1},
+ CU_SUITE_INFO_NULL,
+};
+
+int main()
+{
+ CU_ErrorCode error;
+ if (CUE_SUCCESS != CU_initialize_registry())
+ return CU_get_error();
+
+ error=CU_register_suites(suites);
+
+ if (error != CUE_SUCCESS) {
+ perror(CU_get_error_msg());
+ CU_cleanup_registry();
+ return CU_get_error();
+
+ }
+
+
+
+
+ /* Run all tests using the CUnit Basic interface */
+ CU_basic_set_mode(CU_BRM_VERBOSE);
+
+ CU_basic_run_tests();
+
+ CU_cleanup_registry();
+
+ return CU_get_error();
+
+}
+
--- /dev/null
+/*****************************************************************************
+Copyright (c) 2011, Lab of Parallel Software and Computational Science,ICSAS
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 3. Neither the name of the ISCAS nor the names of its contributors may
+ be used to endorse or promote products derived from this software
+ without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+**********************************************************************************/
+
+#include "common_utest.h"
+
+void test_drot_incx_0(void)
+{
+ int i;
+ int N=4,incX=0,incY=0;
+ double c=0.25,s=0.5;
+ double x1[]={1.0,3.0,5.0,7.0};
+ double y1[]={2.0,4.0,6.0,8.0};
+ double x2[]={1.0,3.0,5.0,7.0};
+ double y2[]={2.0,4.0,6.0,8.0};
+
+ //OpenBLAS
+ drot_(&N,x1,&incX,y1,&incY,&c,&s);
+ //reference
+ drotf_(&N,x2,&incX,y2,&incY,&c,&s);
+
+ for(i=0; i<N; i++){
+ CU_ASSERT_DOUBLE_EQUAL(x1[i], x2[i], CHECK_EPS);
+ CU_ASSERT_DOUBLE_EQUAL(y1[i], y2[i], CHECK_EPS);
+ }
+}