| @@ -17,7 +17,7 @@ jobs: | |||
| - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32" | |||
| script: | |||
| - set -e | |||
| - make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE | |||
| - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE | |||
| - make -C test $COMMON_FLAGS $BTYPE | |||
| - make -C ctest $COMMON_FLAGS $BTYPE | |||
| - make -C utest $COMMON_FLAGS $BTYPE | |||
| @@ -67,7 +67,7 @@ jobs: | |||
| - gfortran-mingw-w64-x86-64 | |||
| before_script: *common-before | |||
| script: | |||
| - make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE | |||
| - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE | |||
| env: | |||
| - TARGET_BOX=WIN64 | |||
| - BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran" | |||
| @@ -119,6 +119,34 @@ jobs: | |||
| - TARGET_BOX=LINUX64_MUSL | |||
| - BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=core2" | |||
| - &test-cmake | |||
| stage: test | |||
| compiler: clang | |||
| addons: | |||
| apt: | |||
| packages: | |||
| - gfortran | |||
| - cmake | |||
| dist: trusty | |||
| sudo: true | |||
| before_script: | |||
| - COMMON_ARGS="-DTARGET=NEHALEM -DNUM_THREADS=32" | |||
| script: | |||
| - set -e | |||
| - mkdir build | |||
| - CONFIG=Release | |||
| - cmake -Bbuild -H. $CMAKE_ARGS $COMMON_ARGS -DCMAKE_BUILD_TYPE=$CONFIG | |||
| - cmake --build build --config $CONFIG -- -j2 | |||
| env: | |||
| - CMAKE=1 | |||
| - <<: *test-cmake | |||
| env: | |||
| - CMAKE=1 CMAKE_ARGS="-DNOFORTRAN=1" | |||
| - <<: *test-cmake | |||
| compiler: gcc | |||
| env: | |||
| - CMAKE=1 | |||
| # whitelist | |||
| branches: | |||
| only: | |||
| @@ -3,53 +3,30 @@ | |||
| ## | |||
| cmake_minimum_required(VERSION 2.8.5) | |||
| project(OpenBLAS) | |||
| project(OpenBLAS C ASM) | |||
| set(OpenBLAS_MAJOR_VERSION 0) | |||
| set(OpenBLAS_MINOR_VERSION 3) | |||
| set(OpenBLAS_PATCH_VERSION 0.dev) | |||
| set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}") | |||
| enable_language(ASM) | |||
| enable_language(C) | |||
| # Adhere to GNU filesystem layout conventions | |||
| include(GNUInstallDirs) | |||
| if(MSVC) | |||
| set(OpenBLAS_LIBNAME libopenblas) | |||
| else() | |||
| set(OpenBLAS_LIBNAME openblas) | |||
| endif() | |||
| ####### | |||
| if(MSVC) | |||
| option(BUILD_WITHOUT_LAPACK "Without LAPACK and LAPACKE (Only BLAS or CBLAS)" ON) | |||
| endif() | |||
| option(BUILD_WITHOUT_CBLAS "Without CBLAS" OFF) | |||
| option(BUILD_DEBUG "Build Debug Version" OFF) | |||
| option(DYNAMIC_ARCH "Build with DYNAMIC_ARCH" OFF) | |||
| option(BUILD_RELAPACK "Build with ReLAPACK (recursive LAPACK" OFF) | |||
| ####### | |||
| if(BUILD_WITHOUT_LAPACK) | |||
| set(NO_LAPACK 1) | |||
| set(NO_LAPACKE 1) | |||
| endif() | |||
| if(CMAKE_CONFIGURATION_TYPES) # multiconfig generator? | |||
| set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE) | |||
| set(CMAKE_BUILD_TYPE | |||
| Debug Debug | |||
| Release Release | |||
| ) | |||
| else() | |||
| if( NOT CMAKE_BUILD_TYPE ) | |||
| if(BUILD_DEBUG) | |||
| set(CMAKE_BUILD_TYPE Debug) | |||
| else() | |||
| set(CMAKE_BUILD_TYPE Release) | |||
| endif() | |||
| endif() | |||
| endif() | |||
| if(BUILD_WITHOUT_CBLAS) | |||
| set(NO_CBLAS 1) | |||
| endif() | |||
| @@ -75,6 +52,9 @@ endif () | |||
| set(SUBDIRS ${BLASDIRS}) | |||
| if (NOT NO_LAPACK) | |||
| list(APPEND SUBDIRS lapack) | |||
| if(BUILD_RELAPACK) | |||
| list(APPEND SUBDIRS relapack/src) | |||
| endif() | |||
| endif () | |||
| # set which float types we want to build for | |||
| @@ -86,6 +66,10 @@ if (NOT DEFINED BUILD_SINGLE AND NOT DEFINED BUILD_DOUBLE AND NOT DEFINED BUILD_ | |||
| set(BUILD_COMPLEX16 true) | |||
| endif () | |||
| if (NOT DEFINED BUILD_MATGEN) | |||
| set(BUILD_MATGEN true) | |||
| endif() | |||
| set(FLOAT_TYPES "") | |||
| if (BUILD_SINGLE) | |||
| message(STATUS "Building Single Precision") | |||
| @@ -107,19 +91,10 @@ if (BUILD_COMPLEX16) | |||
| list(APPEND FLOAT_TYPES "ZCOMPLEX") # defines COMPLEX and DOUBLE | |||
| endif () | |||
| set(SUBDIRS_ALL ${SUBDIRS} test ctest utest exports benchmark ../laswp ../bench) | |||
| # all :: libs netlib tests shared | |||
| # libs : | |||
| if (NOT DEFINED CORE OR "${CORE}" STREQUAL "UNKNOWN") | |||
| message(FATAL_ERROR "Detecting CPU failed. Please set TARGET explicitly, e.g. make TARGET=your_cpu_target. Please read README for details.") | |||
| endif () | |||
| if (${NO_STATIC} AND ${NO_SHARED}) | |||
| message(FATAL_ERROR "Neither static nor shared are enabled.") | |||
| endif () | |||
| #Set default output directory | |||
| set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) | |||
| set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) | |||
| @@ -141,26 +116,20 @@ endforeach () | |||
| # Not using add_subdirectory here because lapack-netlib already has its own CMakeLists.txt. Instead include a cmake script with the sources we want. | |||
| if (NOT NOFORTRAN AND NOT NO_LAPACK) | |||
| include("${PROJECT_SOURCE_DIR}/cmake/lapack.cmake") | |||
| if (NOT NO_LAPACKE) | |||
| include("${PROJECT_SOURCE_DIR}/cmake/lapacke.cmake") | |||
| endif () | |||
| if (NOT NO_LAPACKE) | |||
| include("${PROJECT_SOURCE_DIR}/cmake/lapacke.cmake") | |||
| endif () | |||
| endif () | |||
| # Only generate .def for dll on MSVC and always produce pdb files for debug and release | |||
| if(MSVC) | |||
| set(OpenBLAS_DEF_FILE "${PROJECT_BINARY_DIR}/openblas.def") | |||
| set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi") | |||
| set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi") | |||
| set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") | |||
| if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 3.4) | |||
| set(OpenBLAS_DEF_FILE "${PROJECT_BINARY_DIR}/openblas.def") | |||
| endif() | |||
| set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi") | |||
| set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF") | |||
| endif() | |||
| #ifeq ($(DYNAMIC_ARCH), 1) | |||
| # @$(MAKE) -C kernel commonlibs || exit 1 | |||
| # @for d in $(DYNAMIC_CORE) ; \ | |||
| # do $(MAKE) GOTOBLAS_MAKEFILE= -C kernel TARGET_CORE=$$d kernel || exit 1 ;\ | |||
| # done | |||
| # @echo DYNAMIC_ARCH=1 >> Makefile.conf_last | |||
| #endif | |||
| if (${DYNAMIC_ARCH}) | |||
| add_subdirectory(kernel) | |||
| foreach(TARGET_CORE ${DYNAMIC_CORE}) | |||
| @@ -169,11 +138,29 @@ if (${DYNAMIC_ARCH}) | |||
| endforeach() | |||
| endif () | |||
| # Only build shared libs for MSVC | |||
| if (MSVC) | |||
| set(BUILD_SHARED_LIBS ON) | |||
| endif() | |||
| # add objects to the openblas lib | |||
| add_library(${OpenBLAS_LIBNAME} SHARED ${LA_SOURCES} ${LAPACKE_SOURCES} ${TARGET_OBJS} ${OpenBLAS_DEF_FILE}) | |||
| add_library(${OpenBLAS_LIBNAME} ${LA_SOURCES} ${LAPACKE_SOURCES} ${RELA_SOURCES} ${TARGET_OBJS} ${OpenBLAS_DEF_FILE}) | |||
| # Android needs to explicitly link against libm | |||
| if(ANDROID) | |||
| target_link_libraries(${OpenBLAS_LIBNAME} m) | |||
| endif() | |||
| include("${PROJECT_SOURCE_DIR}/cmake/export.cmake") | |||
| # Handle MSVC exports | |||
| if(MSVC AND BUILD_SHARED_LIBS) | |||
| if (${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} LESS 3.4) | |||
| include("${PROJECT_SOURCE_DIR}/cmake/export.cmake") | |||
| else() | |||
| # Creates verbose .def file (51KB vs 18KB) | |||
| set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS true) | |||
| endif() | |||
| endif() | |||
| # Set output for libopenblas | |||
| set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) | |||
| @@ -181,86 +168,78 @@ set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES LIBRARY_OUTPUT_NAME_DEBUG | |||
| foreach (OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) | |||
| string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG ) | |||
| set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} ) | |||
| set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} ) | |||
| set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} ) | |||
| endforeach() | |||
| enable_testing() | |||
| add_subdirectory(utest) | |||
| if (NOT MSVC) | |||
| #only build shared library for MSVC | |||
| add_library(${OpenBLAS_LIBNAME}_static STATIC ${LA_SOURCES} ${LAPACKE_SOURCES} ${TARGET_OBJS}) | |||
| set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES OUTPUT_NAME ${OpenBLAS_LIBNAME}) | |||
| set_target_properties(${OpenBLAS_LIBNAME}_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) | |||
| if(SMP) | |||
| target_link_libraries(${OpenBLAS_LIBNAME} pthread) | |||
| target_link_libraries(${OpenBLAS_LIBNAME}_static pthread) | |||
| if (USE_THREAD) | |||
| # Add threading library to linker | |||
| find_package(Threads) | |||
| if (THREADS_HAVE_PTHREAD_ARG) | |||
| set_property(TARGET ${OpenBLAS_LIBNAME} PROPERTY COMPILE_OPTIONS "-pthread") | |||
| set_property(TARGET ${OpenBLAS_LIBNAME} PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread") | |||
| endif() | |||
| target_link_libraries(${OpenBLAS_LIBNAME} ${CMAKE_THREAD_LIBS_INIT}) | |||
| endif() | |||
| #build test and ctest | |||
| add_subdirectory(test) | |||
| if(NOT NO_CBLAS) | |||
| add_subdirectory(ctest) | |||
| if (MSVC OR NOT NOFORTRAN) | |||
| # Broken without fortran on unix | |||
| add_subdirectory(utest) | |||
| endif() | |||
| if (NOT MSVC AND NOT NOFORTRAN) | |||
| # Build test and ctest | |||
| add_subdirectory(test) | |||
| if(NOT NO_CBLAS) | |||
| add_subdirectory(ctest) | |||
| endif() | |||
| endif() | |||
| set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES | |||
| set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES | |||
| VERSION ${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION} | |||
| SOVERSION ${OpenBLAS_MAJOR_VERSION} | |||
| ) | |||
| # TODO: Why is the config saved here? Is this necessary with CMake? | |||
| #Save the config files for installation | |||
| # @cp Makefile.conf Makefile.conf_last | |||
| # @cp config.h config_last.h | |||
| #ifdef QUAD_PRECISION | |||
| # @echo "#define QUAD_PRECISION">> config_last.h | |||
| #endif | |||
| #ifeq ($(EXPRECISION), 1) | |||
| # @echo "#define EXPRECISION">> config_last.h | |||
| #endif | |||
| ### | |||
| #ifdef USE_THREAD | |||
| # @echo USE_THREAD=$(USE_THREAD) >> Makefile.conf_last | |||
| #endif | |||
| # @touch lib.grd | |||
| # Install project | |||
| # Install libraries | |||
| install(TARGETS ${OpenBLAS_LIBNAME} | |||
| RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | |||
| ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} | |||
| LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) | |||
| LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ) | |||
| # Install include files | |||
| set (GENCONFIG_BIN ${CMAKE_BINARY_DIR}/gen_config_h${CMAKE_EXECUTABLE_SUFFIX}) | |||
| message(STATUS "Generating openblas_config.h in ${CMAKE_INSTALL_INCLUDEDIR}") | |||
| execute_process(COMMAND ${GENCONFIG_BIN} | |||
| ${CMAKE_CURRENT_SOURCE_DIR}/config.h | |||
| ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h | |||
| OUTPUT_VARIABLE OPENBLAS_CONFIG_H_CONTENTS) | |||
| file(WRITE ${CMAKE_BINARY_DIR}/openblas_config.tmp "${OPENBLAS_CONFIG_H_CONTENTS}") | |||
| configure_file(${CMAKE_BINARY_DIR}/openblas_config.tmp ${CMAKE_BINARY_DIR}/openblas_config.h COPYONLY) | |||
| install (FILES ${CMAKE_BINARY_DIR}/openblas_config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) | |||
| message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}") | |||
| file(WRITE ${CMAKE_BINARY_DIR}/f77blas.h "") | |||
| file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "#ifndef OPENBLAS_F77BLAS_H\n#define OPENBLAS_F77BLAS_H\n#include \"openblas_config.h\"\n") | |||
| file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS) | |||
| file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "${COMMON_INTERFACE_H_CONTENTS}") | |||
| file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "#endif") | |||
| install (FILES ${CMAKE_BINARY_DIR}/f77blas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) | |||
| set(OPENBLAS_CONFIG_H ${CMAKE_BINARY_DIR}/openblas_config.h) | |||
| file(WRITE ${OPENBLAS_CONFIG_H} "#ifndef OPENBLAS_CONFIG_H\n") | |||
| file(APPEND ${OPENBLAS_CONFIG_H} "#define OPENBLAS_CONFIG_H\n") | |||
| file(STRINGS ${PROJECT_BINARY_DIR}/config.h __lines) | |||
| foreach(line ${__lines}) | |||
| string(REPLACE "#define " "" line ${line}) | |||
| file(APPEND ${OPENBLAS_CONFIG_H} "#define OPENBLAS_${line}\n") | |||
| endforeach() | |||
| file(APPEND ${OPENBLAS_CONFIG_H} "#define OPENBLAS_VERSION \"OpenBLAS ${OpenBLAS_VERSION}\"\n") | |||
| file(READ ${CMAKE_CURRENT_SOURCE_DIR}/openblas_config_template.h OPENBLAS_CONFIG_TEMPLATE_H_CONTENTS) | |||
| file(APPEND ${OPENBLAS_CONFIG_H} "${OPENBLAS_CONFIG_TEMPLATE_H_CONTENTS}\n") | |||
| file(APPEND ${OPENBLAS_CONFIG_H} "#endif /* OPENBLAS_CONFIG_H */\n") | |||
| install (FILES ${OPENBLAS_CONFIG_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) | |||
| if(NOT NOFORTRAN) | |||
| message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}") | |||
| set(F77BLAS_H ${CMAKE_BINARY_DIR}/f77blas.h) | |||
| file(WRITE ${F77BLAS_H} "#ifndef OPENBLAS_F77BLAS_H\n") | |||
| file(APPEND ${F77BLAS_H} "#define OPENBLAS_F77BLAS_H\n") | |||
| file(APPEND ${F77BLAS_H} "#include \"openblas_config.h\"\n") | |||
| file(READ ${CMAKE_CURRENT_SOURCE_DIR}/common_interface.h COMMON_INTERFACE_H_CONTENTS) | |||
| file(APPEND ${F77BLAS_H} "${COMMON_INTERFACE_H_CONTENTS}\n") | |||
| file(APPEND ${F77BLAS_H} "#endif") | |||
| install (FILES ${F77BLAS_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) | |||
| endif() | |||
| if(NOT NO_CBLAS) | |||
| message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}") | |||
| @@ -276,16 +255,12 @@ if(NOT NO_LAPACKE) | |||
| add_dependencies( ${OpenBLAS_LIBNAME} genlapacke) | |||
| FILE(GLOB_RECURSE INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/*.h") | |||
| install (FILES ${INCLUDE_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) | |||
| ADD_CUSTOM_TARGET(genlapacke | |||
| COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/include/lapacke_mangling_with_flags.h.in "${CMAKE_BINARY_DIR}/lapacke_mangling.h" | |||
| ) | |||
| install (FILES ${CMAKE_BINARY_DIR}/lapacke_mangling.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) | |||
| endif() | |||
| if(NOT MSVC) | |||
| install (TARGETS ${OpenBLAS_LIBNAME}_static DESTINATION ${CMAKE_INSTALL_LIBDIR}) | |||
| endif() | |||
| include(FindPkgConfig QUIET) | |||
| if(PKG_CONFIG_FOUND) | |||
| @@ -270,6 +270,7 @@ endif | |||
| ifeq ($(BUILD_LAPACK_DEPRECATED), 1) | |||
| -@echo "BUILD_DEPRECATED = 1" >> $(NETLIB_LAPACK_DIR)/make.inc | |||
| endif | |||
| -@echo "LAPACKE_WITH_TMG = 1" >> $(NETLIB_LAPACK_DIR)/make.inc | |||
| -@cat make.inc >> $(NETLIB_LAPACK_DIR)/make.inc | |||
| endif | |||
| @@ -100,12 +100,12 @@ endif | |||
| #Generating openblas.pc | |||
| @echo Generating openblas.pc in $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR) | |||
| @echo 'libdir='$(OPENBLAS_LIBRARY_DIR) >> $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc | |||
| @echo 'includedir='$(OPENBLAS_INCLUDE_DIR) >> $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc | |||
| @echo 'version='$(VERSION) >> $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc | |||
| @echo 'extralib='$(EXTRALIB) >> $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc | |||
| @cat openblas.pc.in >> $(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc | |||
| @echo Generating openblas.pc in "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)" | |||
| @echo 'libdir='$(OPENBLAS_LIBRARY_DIR) >> "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc" | |||
| @echo 'includedir='$(OPENBLAS_INCLUDE_DIR) >> "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc" | |||
| @echo 'version='$(VERSION) >> "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc" | |||
| @echo 'extralib='$(EXTRALIB) >> "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc" | |||
| @cat openblas.pc.in >> "$(DESTDIR)$(OPENBLAS_PKGCONFIG_DIR)/openblas.pc" | |||
| #Generating OpenBLASConfig.cmake | |||
| @@ -29,6 +29,10 @@ ifeq ($(TARGET), P6600) | |||
| TARGET_FLAGS = -mips64r6 | |||
| endif | |||
| ifeq ($(TARGET), I6500) | |||
| TARGET_FLAGS = -mips64r6 | |||
| endif | |||
| all: getarch_2nd | |||
| ./getarch_2nd 0 >> $(TARGET_MAKE) | |||
| ./getarch_2nd 1 >> $(TARGET_CONF) | |||
| @@ -181,6 +181,7 @@ endif | |||
| ifeq ($(NUM_THREADS), 1) | |||
| override USE_THREAD = 0 | |||
| override USE_OPENMP = 0 | |||
| endif | |||
| ifdef USE_THREAD | |||
| @@ -568,6 +569,11 @@ CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS) | |||
| FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS) | |||
| endif | |||
| ifeq ($(CORE), I6500) | |||
| CCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS) | |||
| FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=i6400 $(MSA_FLAGS) | |||
| endif | |||
| ifeq ($(OSNAME), AIX) | |||
| BINARY_DEFINED = 1 | |||
| endif | |||
| @@ -2,7 +2,7 @@ | |||
| [](https://gitter.im/xianyi/OpenBLAS?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) | |||
| Travis CI: [](https://travis-ci.org/xianyi/OpenBLAS) | |||
| Travis CI: [](https://travis-ci.org/xianyi/OpenBLAS) | |||
| AppVeyor: [](https://ci.appveyor.com/project/xianyi/openblas/branch/develop) | |||
| ## Introduction | |||
| @@ -106,6 +106,9 @@ Please read GotoBLAS_01Readme.txt | |||
| - **ARMV8**: Experimental | |||
| - **ARM Cortex-A57**: Experimental | |||
| #### PPC/PPC64 | |||
| - **POWER8**: Optmized Level-3 BLAS and some Level-1, only with USE_OPENMP=1 | |||
| #### IBM zEnterprise System: | |||
| - **Z13**: Optimized Level-3 BLAS and Level-1,2 (double precision) | |||
| @@ -63,6 +63,7 @@ LOONGSON3A | |||
| LOONGSON3B | |||
| I6400 | |||
| P6600 | |||
| I6500 | |||
| 5.IA64 CPU: | |||
| ITANIUM2 | |||
| @@ -5,6 +5,8 @@ version: 0.2.19.{build} | |||
| platform: | |||
| - x64 | |||
| os: Visual Studio 2017 | |||
| configuration: Release | |||
| clone_folder: c:\projects\OpenBLAS | |||
| @@ -24,29 +26,41 @@ skip_commits: | |||
| message: /\[av skip\]/ | |||
| environment: | |||
| global: | |||
| CONDA_INSTALL_LOCN: C:\\Miniconda36-x64 | |||
| matrix: | |||
| - COMPILER: clang-cl | |||
| DYNAMIC_ARCH: ON | |||
| WITH_FORTRAN: yes | |||
| - COMPILER: clang-cl | |||
| DYNAMIC_ARCH: ON | |||
| WITH_FORTRAN: no | |||
| - COMPILER: cl | |||
| install: | |||
| - if [%COMPILER%]==[clang-cl] call C:\Miniconda36-x64\Scripts\activate.bat | |||
| - if [%COMPILER%]==[clang-cl] call %CONDA_INSTALL_LOCN%\Scripts\activate.bat | |||
| - if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force | |||
| - if [%COMPILER%]==[clang-cl] conda install --yes clangdev ninja cmake | |||
| - if [%COMPILER%]==[clang-cl] call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 | |||
| - if [%COMPILER%]==[clang-cl] conda install --yes --quiet clangdev cmake | |||
| - if [%WITH_FORTRAN%]==[no] conda install --yes --quiet ninja | |||
| - if [%WITH_FORTRAN%]==[yes] conda install --yes --quiet -c isuruf kitware-ninja | |||
| - if [%WITH_FORTRAN%]==[yes] conda install --yes --quiet flang | |||
| - if [%COMPILER%]==[clang-cl] call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 | |||
| - if [%COMPILER%]==[clang-cl] set "LIB=%CONDA_INSTALL_LOCN%\Library\lib;%LIB%" | |||
| - if [%COMPILER%]==[clang-cl] set "CPATH=%CONDA_INSTALL_LOCN%\Library\include;%CPATH%" | |||
| before_build: | |||
| - echo Running cmake... | |||
| - cd c:\projects\OpenBLAS | |||
| - if [%COMPILER%]==[cl] cmake -G "Visual Studio 12 Win64" . | |||
| - if [%COMPILER%]==[clang-cl] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl . | |||
| - if [%DYNAMIC_ARCH%]==[ON] cmake -DDYNAMIC_ARCH=ON . | |||
| - ps: if (-Not (Test-Path .\build)) { mkdir build } | |||
| - cd build | |||
| - if [%COMPILER%]==[cl] cmake -G "Visual Studio 15 2017 Win64" .. | |||
| - if [%WITH_FORTRAN%]==[no] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl .. | |||
| - if [%WITH_FORTRAN%]==[yes] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl -DCMAKE_Fortran_COMPILER=flang -DBUILD_WITHOUT_LAPACK=no -DNOFORTRAN=0 .. | |||
| - if [%DYNAMIC_ARCH%]==[ON] cmake -DDYNAMIC_ARCH=ON .. | |||
| build_script: | |||
| - cmake --build . | |||
| test_script: | |||
| - echo Running Test | |||
| - cd c:\projects\OpenBLAS\utest | |||
| - cd utest | |||
| - openblas_utest | |||
| @@ -121,13 +121,15 @@ static void *huge_malloc(BLASLONG size){ | |||
| int main(int argc, char *argv[]){ | |||
| FLOAT *a, *b, *c; | |||
| FLOAT alpha[] = {1.0, 1.0}; | |||
| FLOAT alpha[] = {1.0, 0.0}; | |||
| FLOAT beta [] = {0.0, 0.0}; | |||
| char trans='N'; | |||
| blasint m, n, i, j; | |||
| char transa = 'N'; | |||
| char transb = 'N'; | |||
| blasint m, n, k, i, j, lda, ldb, ldc; | |||
| int loops = 1; | |||
| int has_param_n=0; | |||
| int l; | |||
| int has_param_m = 0; | |||
| int has_param_n = 0; | |||
| int has_param_k = 0; | |||
| char *p; | |||
| int from = 1; | |||
| @@ -135,86 +137,108 @@ int main(int argc, char *argv[]){ | |||
| int step = 1; | |||
| struct timeval start, stop; | |||
| double time1,timeg; | |||
| double time1, timeg; | |||
| argc--;argv++; | |||
| if (argc > 0) { from = atol(*argv); argc--; argv++;} | |||
| if (argc > 0) { to = MAX(atol(*argv), from); argc--; argv++;} | |||
| if (argc > 0) { step = atol(*argv); argc--; argv++;} | |||
| if (argc > 0) { from = atol(*argv); argc--; argv++; } | |||
| if (argc > 0) { to = MAX(atol(*argv), from); argc--; argv++; } | |||
| if (argc > 0) { step = atol(*argv); argc--; argv++; } | |||
| if ((p = getenv("OPENBLAS_TRANS"))) trans=*p; | |||
| if ((p = getenv("OPENBLAS_TRANS"))) { | |||
| transa=*p; | |||
| transb=*p; | |||
| } | |||
| if ((p = getenv("OPENBLAS_TRANSA"))) { | |||
| transa=*p; | |||
| } | |||
| if ((p = getenv("OPENBLAS_TRANSB"))) { | |||
| transb=*p; | |||
| } | |||
| TOUPPER(transa); | |||
| TOUPPER(transb); | |||
| fprintf(stderr, "From : %3d To : %3d Step=%d : Trans=%c\n", from, to, step, trans); | |||
| fprintf(stderr, "From : %3d To : %3d Step=%d : Transa=%c : Transb=%c\n", from, to, step, transa, transb); | |||
| if (( a = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){ | |||
| fprintf(stderr,"Out of Memory!!\n");exit(1); | |||
| p = getenv("OPENBLAS_LOOPS"); | |||
| if ( p != NULL ) { | |||
| loops = atoi(p); | |||
| } | |||
| if (( b = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){ | |||
| fprintf(stderr,"Out of Memory!!\n");exit(1); | |||
| if ((p = getenv("OPENBLAS_PARAM_M"))) { | |||
| m = atoi(p); | |||
| has_param_m=1; | |||
| } else { | |||
| m = to; | |||
| } | |||
| if ((p = getenv("OPENBLAS_PARAM_N"))) { | |||
| n = atoi(p); | |||
| has_param_n=1; | |||
| } else { | |||
| n = to; | |||
| } | |||
| if ((p = getenv("OPENBLAS_PARAM_K"))) { | |||
| k = atoi(p); | |||
| has_param_k=1; | |||
| } else { | |||
| k = to; | |||
| } | |||
| if (( c = (FLOAT *)malloc(sizeof(FLOAT) * to * to * COMPSIZE)) == NULL){ | |||
| if (( a = (FLOAT *)malloc(sizeof(FLOAT) * m * k * COMPSIZE)) == NULL) { | |||
| fprintf(stderr,"Out of Memory!!\n");exit(1); | |||
| } | |||
| p = getenv("OPENBLAS_LOOPS"); | |||
| if ( p != NULL ) | |||
| loops = atoi(p); | |||
| if ((p = getenv("OPENBLAS_PARAM_N"))) { | |||
| n = atoi(p); | |||
| has_param_n=1; | |||
| if (( b = (FLOAT *)malloc(sizeof(FLOAT) * k * n * COMPSIZE)) == NULL) { | |||
| fprintf(stderr,"Out of Memory!!\n");exit(1); | |||
| } | |||
| if (( c = (FLOAT *)malloc(sizeof(FLOAT) * m * n * COMPSIZE)) == NULL) { | |||
| fprintf(stderr,"Out of Memory!!\n");exit(1); | |||
| } | |||
| #ifdef linux | |||
| srandom(getpid()); | |||
| #endif | |||
| for(j = 0; j < to; j++){ | |||
| for(i = 0; i < to * COMPSIZE; i++){ | |||
| a[i + j * to * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; | |||
| b[i + j * to * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; | |||
| c[i + j * to * COMPSIZE] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; | |||
| } | |||
| } | |||
| fprintf(stderr, " SIZE Flops Time\n"); | |||
| for(m = from; m <= to; m += step) | |||
| { | |||
| for (i = 0; i < m * k * COMPSIZE; i++) { | |||
| a[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; | |||
| } | |||
| for (i = 0; i < k * n * COMPSIZE; i++) { | |||
| b[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; | |||
| } | |||
| for (i = 0; i < m * n * COMPSIZE; i++) { | |||
| c[i] = ((FLOAT) rand() / (FLOAT) RAND_MAX) - 0.5; | |||
| } | |||
| fprintf(stderr, " SIZE Flops Time\n"); | |||
| for (i = from; i <= to; i += step) { | |||
| timeg=0; | |||
| if ( has_param_n == 1 && n <= m ) | |||
| n=n; | |||
| else | |||
| n=m; | |||
| if (!has_param_m) { m = i; } | |||
| if (!has_param_n) { n = i; } | |||
| if (!has_param_k) { k = i; } | |||
| if (transa == 'N') { lda = m; } | |||
| else { lda = k; } | |||
| if (transb == 'N') { ldb = k; } | |||
| else { ldb = n; } | |||
| ldc = m; | |||
| fprintf(stderr, " %6dx%d : ", (int)m, (int)n); | |||
| fprintf(stderr, " M=%4d, N=%4d, K=%4d : ", (int)m, (int)n, (int)k); | |||
| gettimeofday( &start, (struct timezone *)0); | |||
| for (l=0; l<loops; l++) | |||
| { | |||
| GEMM (&trans, &trans, &m, &n, &m, alpha, a, &m, b, &m, beta, c, &m ); | |||
| for (j=0; j<loops; j++) { | |||
| GEMM (&transa, &transb, &m, &n, &k, alpha, a, &lda, b, &ldb, beta, c, &ldc); | |||
| } | |||
| gettimeofday( &stop, (struct timezone *)0); | |||
| time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6; | |||
| gettimeofday( &stop, (struct timezone *)0); | |||
| time1 = (double)(stop.tv_sec - start.tv_sec) + (double)((stop.tv_usec - start.tv_usec)) * 1.e-6; | |||
| timeg = time1/loops; | |||
| fprintf(stderr, | |||
| " %10.2f MFlops %10.6f sec\n", | |||
| COMPSIZE * COMPSIZE * 2. * (double)m * (double)m * (double)n / timeg * 1.e-6, time1); | |||
| } | |||
| return 0; | |||
| @@ -57,45 +57,45 @@ double cblas_dsdot (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_ | |||
| float cblas_sdot(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy); | |||
| double cblas_ddot(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy); | |||
| openblas_complex_float cblas_cdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy); | |||
| openblas_complex_float cblas_cdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy); | |||
| openblas_complex_double cblas_zdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy); | |||
| openblas_complex_double cblas_zdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy); | |||
| openblas_complex_float cblas_cdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); | |||
| openblas_complex_float cblas_cdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); | |||
| openblas_complex_double cblas_zdotu(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); | |||
| openblas_complex_double cblas_zdotc(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_cdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy, openblas_complex_float *ret); | |||
| void cblas_cdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *y, OPENBLAS_CONST blasint incy, openblas_complex_float *ret); | |||
| void cblas_zdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy, openblas_complex_double *ret); | |||
| void cblas_zdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *y, OPENBLAS_CONST blasint incy, openblas_complex_double *ret); | |||
| void cblas_cdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); | |||
| void cblas_cdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); | |||
| void cblas_zdotu_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); | |||
| void cblas_zdotc_sub(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *y, OPENBLAS_CONST blasint incy, void *ret); | |||
| float cblas_sasum (OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); | |||
| double cblas_dasum (OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); | |||
| float cblas_scasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); | |||
| double cblas_dzasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); | |||
| float cblas_scasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); | |||
| double cblas_dzasum(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); | |||
| float cblas_snrm2 (OPENBLAS_CONST blasint N, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX); | |||
| double cblas_dnrm2 (OPENBLAS_CONST blasint N, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX); | |||
| float cblas_scnrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX); | |||
| double cblas_dznrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX); | |||
| float cblas_scnrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX); | |||
| double cblas_dznrm2(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX); | |||
| CBLAS_INDEX cblas_isamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); | |||
| CBLAS_INDEX cblas_idamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); | |||
| CBLAS_INDEX cblas_icamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx); | |||
| CBLAS_INDEX cblas_izamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx); | |||
| CBLAS_INDEX cblas_icamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); | |||
| CBLAS_INDEX cblas_izamax(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx); | |||
| void cblas_saxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_daxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_caxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_zaxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_caxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_zaxpy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_scopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_dcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_ccopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_zcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_ccopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_zcopy(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_sswap(OPENBLAS_CONST blasint n, float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_dswap(OPENBLAS_CONST blasint n, double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_cswap(OPENBLAS_CONST blasint n, float *x, OPENBLAS_CONST blasint incx, float *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_zswap(OPENBLAS_CONST blasint n, double *x, OPENBLAS_CONST blasint incx, double *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_cswap(OPENBLAS_CONST blasint n, void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_zswap(OPENBLAS_CONST blasint n, void *x, OPENBLAS_CONST blasint incx, void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_srot(OPENBLAS_CONST blasint N, float *X, OPENBLAS_CONST blasint incX, float *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST float c, OPENBLAS_CONST float s); | |||
| void cblas_drot(OPENBLAS_CONST blasint N, double *X, OPENBLAS_CONST blasint incX, double *Y, OPENBLAS_CONST blasint incY, OPENBLAS_CONST double c, OPENBLAS_CONST double s); | |||
| @@ -111,59 +111,59 @@ void cblas_drotmg(double *d1, double *d2, double *b1, OPENBLAS_CONST double b2, | |||
| void cblas_sscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, float *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_dscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_cscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, float *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_zscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_csscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, float *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_zdscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_cscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_zscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_csscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_zdscal(OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_sgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, | |||
| OPENBLAS_CONST float alpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float beta, float *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_dgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, | |||
| OPENBLAS_CONST double alpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double beta, double *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_cgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, | |||
| OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST float *beta, float *y, OPENBLAS_CONST blasint incy); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_zgemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE trans, OPENBLAS_CONST blasint m, OPENBLAS_CONST blasint n, | |||
| OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST double *beta, double *y, OPENBLAS_CONST blasint incy); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *a, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx, OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_sger (OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_dger (OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_cgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_cgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_zgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_zgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_cgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_cgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_zgeru(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_zgerc(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_strsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_dtrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ctrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ztrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ctrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ztrsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_strmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_dtrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ctrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ztrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ctrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ztrmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ssyr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_dsyr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_cher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_zher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_cher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_zher(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_ssyr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo,OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, | |||
| OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_dsyr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, | |||
| OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_cher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, | |||
| OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_zher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, | |||
| OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_cher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, | |||
| OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_zher2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, | |||
| OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *A, OPENBLAS_CONST blasint lda); | |||
| void cblas_sgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_dgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_cgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *beta, float *Y, OPENBLAS_CONST blasint incY); | |||
| OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_zgbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *beta, double *Y, OPENBLAS_CONST blasint incY); | |||
| OPENBLAS_CONST blasint KL, OPENBLAS_CONST blasint KU, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_ssbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, | |||
| OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); | |||
| @@ -176,45 +176,45 @@ void cblas_stbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLA | |||
| void cblas_dtbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ctbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ztbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_stbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_dtbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ctbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *X, OPENBLAS_CONST blasint incX); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ztbsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *X, OPENBLAS_CONST blasint incX); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_stpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_dtpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ctpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ztpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_stpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_dtpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ctpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST float *Ap, float *X, OPENBLAS_CONST blasint incX); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ztpsv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_DIAG Diag, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST double *Ap, double *X, OPENBLAS_CONST blasint incX); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST void *Ap, void *X, OPENBLAS_CONST blasint incX); | |||
| void cblas_ssymv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, | |||
| OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float beta, float *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_dsymv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, | |||
| OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double beta, double *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_chemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, | |||
| OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *beta, float *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_zhemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, | |||
| OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *beta, double *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_chemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, | |||
| OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_zhemv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, | |||
| OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_sspmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *Ap, | |||
| @@ -225,36 +225,36 @@ void cblas_dspmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLA | |||
| void cblas_sspr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *Ap); | |||
| void cblas_dspr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, double *Ap); | |||
| void cblas_chpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, float *A); | |||
| void cblas_zhpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X,OPENBLAS_CONST blasint incX, double *A); | |||
| void cblas_chpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, void *A); | |||
| void cblas_zhpr(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST void *X,OPENBLAS_CONST blasint incX, void *A); | |||
| void cblas_sspr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *A); | |||
| void cblas_dspr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *A); | |||
| void cblas_chpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *Y, OPENBLAS_CONST blasint incY, float *Ap); | |||
| void cblas_zhpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *Y, OPENBLAS_CONST blasint incY, double *Ap); | |||
| void cblas_chpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *Ap); | |||
| void cblas_zhpr2(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *Y, OPENBLAS_CONST blasint incY, void *Ap); | |||
| void cblas_chbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *beta, float *Y, OPENBLAS_CONST blasint incY); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_zhbmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *beta, double *Y, OPENBLAS_CONST blasint incY); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_chpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *Ap, OPENBLAS_CONST float *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST float *beta, float *Y, OPENBLAS_CONST blasint incY); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *Ap, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_zhpmv(OPENBLAS_CONST enum CBLAS_ORDER order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *Ap, OPENBLAS_CONST double *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST double *beta, double *Y, OPENBLAS_CONST blasint incY); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *Ap, OPENBLAS_CONST void *X, OPENBLAS_CONST blasint incX, OPENBLAS_CONST void *beta, void *Y, OPENBLAS_CONST blasint incY); | |||
| void cblas_sgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_dgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_cgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_cgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_zgemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_zgemm3m(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransB, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_ssymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, | |||
| @@ -262,60 +262,60 @@ void cblas_ssymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLA | |||
| void cblas_dsymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_csymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_zsymm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_ssyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_dsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_csyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_zsyrk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_ssyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_dsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_csyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_zsyr2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_strmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb); | |||
| void cblas_dtrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb); | |||
| void cblas_ctrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb); | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); | |||
| void cblas_ztrmm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb); | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); | |||
| void cblas_strsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb); | |||
| void cblas_dtrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb); | |||
| void cblas_ctrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, float *B, OPENBLAS_CONST blasint ldb); | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); | |||
| void cblas_ztrsm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE TransA, | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, double *B, OPENBLAS_CONST blasint ldb); | |||
| OPENBLAS_CONST enum CBLAS_DIAG Diag, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, void *B, OPENBLAS_CONST blasint ldb); | |||
| void cblas_chemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float *beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_zhemm(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_SIDE Side, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST blasint M, OPENBLAS_CONST blasint N, | |||
| OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double *beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST void *beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_cherk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST float alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST float alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_zherk(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST double alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST double alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_cher2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST float *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, float *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST float beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_zher2k(OPENBLAS_CONST enum CBLAS_ORDER Order, OPENBLAS_CONST enum CBLAS_UPLO Uplo, OPENBLAS_CONST enum CBLAS_TRANSPOSE Trans, OPENBLAS_CONST blasint N, OPENBLAS_CONST blasint K, | |||
| OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST double *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, double *C, OPENBLAS_CONST blasint ldc); | |||
| OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *A, OPENBLAS_CONST blasint lda, OPENBLAS_CONST void *B, OPENBLAS_CONST blasint ldb, OPENBLAS_CONST double beta, void *C, OPENBLAS_CONST blasint ldc); | |||
| void cblas_xerbla(blasint p, char *rout, char *form, ...); | |||
| @@ -325,9 +325,9 @@ void cblas_saxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST float alpha, OPENBLAS | |||
| void cblas_daxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST double alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST double beta, double *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_caxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST float *alpha, OPENBLAS_CONST float *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST float *beta, float *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_caxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_zaxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST double *alpha, OPENBLAS_CONST double *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST double *beta, double *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_zaxpby(OPENBLAS_CONST blasint n, OPENBLAS_CONST void *alpha, OPENBLAS_CONST void *x, OPENBLAS_CONST blasint incx,OPENBLAS_CONST void *beta, void *y, OPENBLAS_CONST blasint incy); | |||
| void cblas_somatcopy(OPENBLAS_CONST enum CBLAS_ORDER CORDER, OPENBLAS_CONST enum CBLAS_TRANSPOSE CTRANS, OPENBLAS_CONST blasint crows, OPENBLAS_CONST blasint ccols, OPENBLAS_CONST float calpha, OPENBLAS_CONST float *a, | |||
| OPENBLAS_CONST blasint clda, float *b, OPENBLAS_CONST blasint cldb); | |||
| @@ -3,9 +3,9 @@ | |||
| ## Description: Ported from portion of OpenBLAS/Makefile.system | |||
| ## Sets various variables based on architecture. | |||
| if (${ARCH} STREQUAL "x86" OR ${ARCH} STREQUAL "x86_64") | |||
| if (X86 OR X86_64) | |||
| if (${ARCH} STREQUAL "x86") | |||
| if (X86) | |||
| if (NOT BINARY) | |||
| set(NO_BINARY_MODE 1) | |||
| endif () | |||
| @@ -33,41 +33,22 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel") | |||
| endif () | |||
| if (USE_OPENMP) | |||
| if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LSB") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -fopenmp") | |||
| endif () | |||
| if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang") | |||
| message(WARNING "Clang doesn't support OpenMP yet.") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -fopenmp") | |||
| endif () | |||
| if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -openmp") | |||
| endif () | |||
| if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -mp") | |||
| endif () | |||
| if (${CMAKE_C_COMPILER_ID} STREQUAL "OPEN64") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -mp") | |||
| set(CEXTRALIB "${CEXTRALIB} -lstdc++") | |||
| endif () | |||
| if (${CMAKE_C_COMPILER_ID} STREQUAL "PATHSCALE") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -mp") | |||
| endif () | |||
| # USE_SIMPLE_THREADED_LEVEL3 = 1 | |||
| # NO_AFFINITY = 1 | |||
| find_package(OpenMP REQUIRED) | |||
| if (OpenMP_FOUND) | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} ${OpenMP_C_FLAGS} -DUSE_OPENMP") | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} ${OpenMP_Fortran_FLAGS}") | |||
| endif() | |||
| endif () | |||
| if (DYNAMIC_ARCH) | |||
| if (${ARCH} STREQUAL "x86") | |||
| if (X86) | |||
| set(DYNAMIC_CORE KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO) | |||
| endif () | |||
| if (${ARCH} STREQUAL "x86_64") | |||
| if (X86_64) | |||
| set(DYNAMIC_CORE PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO) | |||
| if (NOT NO_AVX) | |||
| set(DYNAMIC_CORE ${DYNAMIC_CORE} SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR) | |||
| @@ -94,7 +75,7 @@ if (${ARCH} STREQUAL "ia64") | |||
| endif () | |||
| endif () | |||
| if (${ARCH} STREQUAL "mips64") | |||
| if (MIPS64) | |||
| set(NO_BINARY_MODE 1) | |||
| endif () | |||
| @@ -103,12 +84,12 @@ if (${ARCH} STREQUAL "alpha") | |||
| set(BINARY_DEFINED 1) | |||
| endif () | |||
| if (${ARCH} STREQUAL "arm") | |||
| if (ARM) | |||
| set(NO_BINARY_MODE 1) | |||
| set(BINARY_DEFINED 1) | |||
| endif () | |||
| if (${ARCH} STREQUAL "arm64") | |||
| if (ARM64) | |||
| set(NO_BINARY_MODE 1) | |||
| set(BINARY_DEFINED 1) | |||
| endif () | |||
| @@ -1,101 +0,0 @@ | |||
| ## | |||
| ## Author: Hank Anderson <hank@statease.com> | |||
| ## Description: Ported from the OpenBLAS/c_check perl script. | |||
| ## This is triggered by prebuild.cmake and runs before any of the code is built. | |||
| ## Creates config.h and Makefile.conf. | |||
| # CMake vars set by this file: | |||
| # OSNAME (use CMAKE_SYSTEM_NAME) | |||
| # ARCH | |||
| # C_COMPILER (use CMAKE_C_COMPILER) | |||
| # BINARY32 | |||
| # BINARY64 | |||
| # FU | |||
| # CROSS_SUFFIX | |||
| # CROSS | |||
| # CEXTRALIB | |||
| # Defines set by this file: | |||
| # OS_ | |||
| # ARCH_ | |||
| # C_ | |||
| # __32BIT__ | |||
| # __64BIT__ | |||
| # FUNDERSCORE | |||
| # PTHREAD_CREATE_FUNC | |||
| # N.B. c_check (and ctest.c) is not cross-platform, so instead try to use CMake variables. | |||
| set(FU "") | |||
| if(APPLE) | |||
| set(FU "_") | |||
| elseif(MSVC AND ${CMAKE_C_COMPILER_ID} MATCHES "Clang") | |||
| set(FU "") | |||
| elseif(MSVC) | |||
| set(FU "_") | |||
| elseif(UNIX) | |||
| set(FU "") | |||
| endif() | |||
| # Convert CMake vars into the format that OpenBLAS expects | |||
| string(TOUPPER ${CMAKE_SYSTEM_NAME} HOST_OS) | |||
| if (${HOST_OS} STREQUAL "WINDOWS") | |||
| set(HOST_OS WINNT) | |||
| endif () | |||
| # added by hpa - check size of void ptr to detect 64-bit compile | |||
| if (NOT DEFINED BINARY) | |||
| set(BINARY 32) | |||
| if (CMAKE_SIZEOF_VOID_P EQUAL 8) | |||
| set(BINARY 64) | |||
| endif () | |||
| endif () | |||
| if (BINARY EQUAL 64) | |||
| set(BINARY64 1) | |||
| else () | |||
| set(BINARY32 1) | |||
| endif () | |||
| # CMake docs define these: | |||
| # CMAKE_SYSTEM_PROCESSOR - The name of the CPU CMake is building for. | |||
| # CMAKE_HOST_SYSTEM_PROCESSOR - The name of the CPU CMake is running on. | |||
| # | |||
| # TODO: CMAKE_SYSTEM_PROCESSOR doesn't seem to be correct - instead get it from the compiler a la c_check | |||
| set(ARCH ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "Target Architecture") | |||
| if (${ARCH} STREQUAL "AMD64") | |||
| set(ARCH "x86_64") | |||
| endif () | |||
| # If you are using a 32-bit compiler on a 64-bit system CMAKE_SYSTEM_PROCESSOR will be wrong | |||
| if (${ARCH} STREQUAL "x86_64" AND BINARY EQUAL 32) | |||
| set(ARCH x86) | |||
| endif () | |||
| if (${ARCH} STREQUAL "X86") | |||
| set(ARCH x86) | |||
| endif () | |||
| if (${ARCH} MATCHES "ppc") | |||
| set(ARCH power) | |||
| endif () | |||
| set(COMPILER_ID ${CMAKE_CXX_COMPILER_ID}) | |||
| if (${COMPILER_ID} STREQUAL "GNU") | |||
| set(COMPILER_ID "GCC") | |||
| endif () | |||
| string(TOUPPER ${ARCH} UC_ARCH) | |||
| file(WRITE ${TARGET_CONF_TEMP} | |||
| "#define OS_${HOST_OS}\t1\n" | |||
| "#define ARCH_${UC_ARCH}\t1\n" | |||
| "#define C_${COMPILER_ID}\t1\n" | |||
| "#define __${BINARY}BIT__\t1\n" | |||
| "#define FUNDERSCORE\t${FU}\n") | |||
| if (${HOST_OS} STREQUAL "WINDOWSSTORE") | |||
| file(APPEND ${TARGET_CONF_TEMP} | |||
| "#define OS_WINNT\t1\n") | |||
| endif () | |||
| @@ -15,7 +15,7 @@ if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR | |||
| if (NO_BINARY_MODE) | |||
| if (${ARCH} STREQUAL "mips64") | |||
| if (MIPS64) | |||
| if (BINARY64) | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=64") | |||
| else () | |||
| @@ -24,17 +24,12 @@ if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR | |||
| set(BINARY_DEFINED 1) | |||
| endif () | |||
| if (${CORE} STREQUAL "LOONGSON3A") | |||
| if (${CORE} STREQUAL "LOONGSON3A" OR ${CORE} STREQUAL "LOONGSON3B") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64") | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64") | |||
| endif () | |||
| if (${CORE} STREQUAL "LOONGSON3B") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64") | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64") | |||
| endif () | |||
| if (${OSNAME} STREQUAL "AIX") | |||
| if (CMAKE_SYSTEM_NAME STREQUAL "AIX") | |||
| set(BINARY_DEFINED 1) | |||
| endif () | |||
| endif () | |||
| @@ -66,7 +61,7 @@ endif () | |||
| if (${CMAKE_C_COMPILER} STREQUAL "OPEN64") | |||
| if (${ARCH} STREQUAL "mips64") | |||
| if (MIPS64) | |||
| if (NOT BINARY64) | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -n32") | |||
| @@ -94,10 +89,10 @@ endif () | |||
| if (${CMAKE_C_COMPILER} STREQUAL "SUN") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -w") | |||
| if (${ARCH} STREQUAL "x86") | |||
| if (X86) | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -m32") | |||
| else () | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -m64") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -m64") | |||
| endif () | |||
| endif () | |||
| @@ -20,12 +20,6 @@ | |||
| # NEEDBUNDERSCORE | |||
| # NEED2UNDERSCORES | |||
| if (MSVC) | |||
| # had to do this for MSVC, else CMake automatically assumes I have ifort... -hpa | |||
| include(CMakeForceCompiler) | |||
| CMAKE_FORCE_Fortran_COMPILER(gfortran GNU) | |||
| endif () | |||
| if (NOT NO_LAPACK) | |||
| enable_language(Fortran) | |||
| else() | |||
| @@ -34,11 +28,7 @@ else() | |||
| endif() | |||
| if (NOT ONLY_CBLAS) | |||
| # N.B. f_check is not cross-platform, so instead try to use CMake variables | |||
| # run f_check (appends to TARGET files) | |||
| # message(STATUS "Running f_check...") | |||
| # execute_process(COMMAND perl f_check ${TARGET_MAKE} ${TARGET_CONF} ${CMAKE_Fortran_COMPILER} | |||
| # WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}) | |||
| # TODO: detect whether underscore needed, set #defines and BU appropriately - use try_compile | |||
| # TODO: set FEXTRALIB flags a la f_check? | |||
| @@ -5,13 +5,8 @@ | |||
| if (${F_COMPILER} STREQUAL "FLANG") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_FLANG") | |||
| if (BINARY64) | |||
| if (INTERFACE64) | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -i8") | |||
| endif () | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -Wall") | |||
| else () | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -Wall") | |||
| if (BINARY64 AND INTERFACE64) | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -i8") | |||
| endif () | |||
| if (USE_OPENMP) | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp") | |||
| @@ -50,7 +45,7 @@ if (${F_COMPILER} STREQUAL "GFORTRAN") | |||
| set(EXTRALIB "{EXTRALIB} -lgfortran") | |||
| endif () | |||
| if (NO_BINARY_MODE) | |||
| if (${ARCH} STREQUAL "mips64") | |||
| if (MIPS64) | |||
| if (BINARY64) | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=64") | |||
| else () | |||
| @@ -130,7 +125,7 @@ if (${F_COMPILER} STREQUAL "PATHSCALE") | |||
| endif () | |||
| endif () | |||
| if (NOT ${ARCH} STREQUAL "mips64") | |||
| if (NOT MIPS64) | |||
| if (NOT BINARY64) | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -m32") | |||
| else () | |||
| @@ -158,7 +153,7 @@ if (${F_COMPILER} STREQUAL "OPEN64") | |||
| endif () | |||
| endif () | |||
| if (${ARCH} STREQUAL "mips64") | |||
| if (MIPS64) | |||
| if (NOT BINARY64) | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -n32") | |||
| @@ -189,7 +184,7 @@ endif () | |||
| if (${F_COMPILER} STREQUAL "SUN") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_SUN") | |||
| if (${ARCH} STREQUAL "x86") | |||
| if (X86) | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -m32") | |||
| else () | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -m64") | |||
| @@ -1,387 +1,485 @@ | |||
| # Sources for compiling lapack-netlib. Can't use CMakeLists.txt because lapack-netlib already has its own cmake files. | |||
| set(ALLAUX | |||
| ilaenv.f ieeeck.f lsamen.f xerbla_array.f iparmq.f | |||
| ilaprec.f ilatrans.f ilauplo.f iladiag.f iparam2stage.F chla_transtype.f | |||
| ../INSTALL/ilaver.f ../INSTALL/slamch.f | |||
| ) | |||
| set(ALLAUX ilaenv.f ilaenv2stage.f ieeeck.f lsamen.f iparmq.f iparam2stage.F | |||
| ilaprec.f ilatrans.f ilauplo.f iladiag.f chla_transtype.f | |||
| ../INSTALL/ilaver.f xerbla_array.f | |||
| ../INSTALL/slamch.f) | |||
| set(SCLAUX | |||
| sbdsdc.f | |||
| sbdsqr.f sdisna.f slabad.f slacpy.f sladiv.f slae2.f slaebz.f | |||
| slaed0.f slaed1.f slaed2.f slaed3.f slaed4.f slaed5.f slaed6.f | |||
| slaed7.f slaed8.f slaed9.f slaeda.f slaev2.f slagtf.f | |||
| slagts.f slamrg.f slanst.f | |||
| slapy2.f slapy3.f slarnv.f | |||
| slarra.f slarrb.f slarrc.f slarrd.f slarre.f slarrf.f slarrj.f | |||
| slarrk.f slarrr.f slaneg.f | |||
| slartg.f slaruv.f slas2.f slascl.f | |||
| slasd0.f slasd1.f slasd2.f slasd3.f slasd4.f slasd5.f slasd6.f | |||
| slasd7.f slasd8.f slasda.f slasdq.f slasdt.f | |||
| slaset.f slasq1.f slasq2.f slasq3.f slasq4.f slasq5.f slasq6.f | |||
| slasr.f slasrt.f slassq.f slasv2.f spttrf.f sstebz.f sstedc.f | |||
| ssteqr.f ssterf.f slaisnan.f sisnan.f | |||
| slartgp.f slartgs.f | |||
| ../INSTALL/second_${TIMER}.f | |||
| ) | |||
| sbdsdc.f | |||
| sbdsqr.f sdisna.f slabad.f slacpy.f sladiv.f slae2.f slaebz.f | |||
| slaed0.f slaed1.f slaed2.f slaed3.f slaed4.f slaed5.f slaed6.f | |||
| slaed7.f slaed8.f slaed9.f slaeda.f slaev2.f slagtf.f | |||
| slagts.f slamrg.f slanst.f | |||
| slapy2.f slapy3.f slarnv.f | |||
| slarra.f slarrb.f slarrc.f slarrd.f slarre.f slarrf.f slarrj.f | |||
| slarrk.f slarrr.f slaneg.f | |||
| slartg.f slaruv.f slas2.f slascl.f | |||
| slasd0.f slasd1.f slasd2.f slasd3.f slasd4.f slasd5.f slasd6.f | |||
| slasd7.f slasd8.f slasda.f slasdq.f slasdt.f | |||
| slaset.f slasq1.f slasq2.f slasq3.f slasq4.f slasq5.f slasq6.f | |||
| slasr.f slasrt.f slassq.f slasv2.f spttrf.f sstebz.f sstedc.f | |||
| ssteqr.f ssterf.f slaisnan.f sisnan.f | |||
| slartgp.f slartgs.f | |||
| ../INSTALL/second_${TIMER}.f) | |||
| set(DZLAUX | |||
| dbdsdc.f dbdsvdx.f | |||
| dbdsqr.f ddisna.f dlabad.f dlacpy.f dladiv.f dlae2.f dlaebz.f | |||
| dlaed0.f dlaed1.f dlaed2.f dlaed3.f dlaed4.f dlaed5.f dlaed6.f | |||
| dlaed7.f dlaed8.f dlaed9.f dlaeda.f dlaev2.f dlagtf.f | |||
| dlagts.f dlamrg.f dlanst.f | |||
| dlapy2.f dlapy3.f dlarnv.f | |||
| dlarra.f dlarrb.f dlarrc.f dlarrd.f dlarre.f dlarrf.f dlarrj.f | |||
| dlarrk.f dlarrr.f dlaneg.f | |||
| dlartg.f dlaruv.f dlas2.f dlascl.f | |||
| dlasd0.f dlasd1.f dlasd2.f dlasd3.f dlasd4.f dlasd5.f dlasd6.f | |||
| dlasd7.f dlasd8.f dlasda.f dlasdq.f dlasdt.f | |||
| dlaset.f dlasq1.f dlasq2.f dlasq3.f dlasq4.f dlasq5.f dlasq6.f | |||
| dlasr.f dlasrt.f dlassq.f dlasv2.f dpttrf.f dstebz.f dstedc.f | |||
| dsteqr.f dsterf.f dlaisnan.f disnan.f | |||
| dlartgp.f dlartgs.f | |||
| ../INSTALL/dlamch.f ../INSTALL/dsecnd_${TIMER}.f | |||
| dgelq.f dgelqt.f dgelqt3.f dgemlq.f dgemlqt.f dgemqr.f dgeqr.f | |||
| dgetsls.f dlamswlq.f dlamtsqr.f dlaswlq.f dlatsqr.f dtplqt.f | |||
| dtplqt2.f dtpmlqt.f dsysv_aa.f dsytrf_aa.f dsytrs_aa.f dlasyf_aa.f | |||
| dsytf2_rk.f dlasyf_rk.f dsytrf_rk.f dsytrs_3.f dsycon_3.f dsytri_3.f | |||
| dsytri_3x.f dsysv_rk.f dsb2st_kernels.f dsbev_2stage.f dsbevd_2stage.f | |||
| dsbevx_2stage.f dsyev_2stage.f dsyevd_2stage.f dsyevr_2stage.f | |||
| dsyevx_2stage.f dsygv_2stage.f dsytrd_2stage.f dsytrd_sb2st.F | |||
| dsytrd_sy2sb.f dlarfy.f | |||
| ) | |||
| dbdsdc.f | |||
| dbdsqr.f ddisna.f dlabad.f dlacpy.f dladiv.f dlae2.f dlaebz.f | |||
| dlaed0.f dlaed1.f dlaed2.f dlaed3.f dlaed4.f dlaed5.f dlaed6.f | |||
| dlaed7.f dlaed8.f dlaed9.f dlaeda.f dlaev2.f dlagtf.f | |||
| dlagts.f dlamrg.f dlanst.f | |||
| dlapy2.f dlapy3.f dlarnv.f | |||
| dlarra.f dlarrb.f dlarrc.f dlarrd.f dlarre.f dlarrf.f dlarrj.f | |||
| dlarrk.f dlarrr.f dlaneg.f | |||
| dlartg.f dlaruv.f dlas2.f dlascl.f | |||
| dlasd0.f dlasd1.f dlasd2.f dlasd3.f dlasd4.f dlasd5.f dlasd6.f | |||
| dlasd7.f dlasd8.f dlasda.f dlasdq.f dlasdt.f | |||
| dlaset.f dlasq1.f dlasq2.f dlasq3.f dlasq4.f dlasq5.f dlasq6.f | |||
| dlasr.f dlasrt.f dlassq.f dlasv2.f dpttrf.f dstebz.f dstedc.f | |||
| dsteqr.f dsterf.f dlaisnan.f disnan.f | |||
| dlartgp.f dlartgs.f | |||
| ../INSTALL/dlamch.f ../INSTALL/dsecnd_${TIMER}.f) | |||
| set(SLASRC | |||
| sbdsvdx.f sgbbrd.f sgbcon.f sgbequ.f sgbrfs.f sgbsv.f | |||
| sgbsvx.f sgbtf2.f sgbtrf.f sgbtrs.f sgebak.f sgebal.f sgebd2.f | |||
| sgebrd.f sgecon.f sgeequ.f sgees.f sgeesx.f sgeev.f sgeevx.f | |||
| DEPRECATED/sgegs.f DEPRECATED/sgegv.f sgehd2.f sgehrd.f sgelq2.f sgelqf.f | |||
| sgels.f sgelsd.f sgelss.f DEPRECATED/sgelsx.f sgelsy.f sgeql2.f sgeqlf.f | |||
| sgeqp3.f DEPRECATED/sgeqpf.f sgeqr2.f sgeqr2p.f sgeqrf.f sgeqrfp.f sgerfs.f | |||
| sgerq2.f sgerqf.f sgesc2.f sgesdd.f sgesvd.f sgesvdx.f sgesvx.f | |||
| sgetc2.f sgetri.f sgetrf2.f | |||
| sggbak.f sggbal.f sgghd3.f sgges.f sgges3.f sggesx.f sggev.f sggev3.f sggevx.f | |||
| sggglm.f sgghrd.f sgglse.f sggqrf.f | |||
| sggrqf.f DEPRECATED/sggsvd.f sggsvd3.f DEPRECATED/sggsvp.f sggsvp3.f sgtcon.f sgtrfs.f sgtsv.f | |||
| sgtsvx.f sgttrf.f sgttrs.f sgtts2.f shgeqz.f | |||
| shsein.f shseqr.f slabrd.f slacon.f slacn2.f | |||
| slaein.f slaexc.f slag2.f slags2.f slagtm.f slagv2.f slahqr.f | |||
| DEPRECATED/slahrd.f slahr2.f slaic1.f slaln2.f slals0.f slalsa.f slalsd.f | |||
| slangb.f slange.f slangt.f slanhs.f slansb.f slansp.f | |||
| slansy.f slantb.f slantp.f slantr.f slanv2.f | |||
| slapll.f slapmt.f | |||
| slaqgb.f slaqge.f slaqp2.f slaqps.f slaqsb.f slaqsp.f slaqsy.f | |||
| slaqr0.f slaqr1.f slaqr2.f slaqr3.f slaqr4.f slaqr5.f | |||
| slaqtr.f slar1v.f slar2v.f ilaslr.f ilaslc.f | |||
| slarf.f slarfb.f slarfg.f slarfgp.f slarft.f slarfx.f slargv.f | |||
| slarrv.f slartv.f | |||
| slarz.f slarzb.f slarzt.f slasy2.f slasyf.f slasyf_rook.f | |||
| slatbs.f slatdf.f slatps.f slatrd.f slatrs.f slatrz.f DEPRECATED/slatzm.f | |||
| sopgtr.f sopmtr.f sorg2l.f sorg2r.f | |||
| sorgbr.f sorghr.f sorgl2.f sorglq.f sorgql.f sorgqr.f sorgr2.f | |||
| sorgrq.f sorgtr.f sorm2l.f sorm2r.f sorm22.f | |||
| sormbr.f sormhr.f sorml2.f sormlq.f sormql.f sormqr.f sormr2.f | |||
| sormr3.f sormrq.f sormrz.f sormtr.f spbcon.f spbequ.f spbrfs.f | |||
| spbstf.f spbsv.f spbsvx.f | |||
| spbtf2.f spbtrf.f spbtrs.f spocon.f spoequ.f sporfs.f sposv.f | |||
| sposvx.f spstrf.f spstf2.f | |||
| sppcon.f sppequ.f | |||
| spprfs.f sppsv.f sppsvx.f spptrf.f spptri.f spptrs.f sptcon.f | |||
| spteqr.f sptrfs.f sptsv.f sptsvx.f spttrs.f sptts2.f srscl.f | |||
| ssbev.f ssbevd.f ssbevx.f ssbgst.f ssbgv.f ssbgvd.f ssbgvx.f | |||
| ssbtrd.f sspcon.f sspev.f sspevd.f sspevx.f sspgst.f | |||
| sspgv.f sspgvd.f sspgvx.f ssprfs.f sspsv.f sspsvx.f ssptrd.f | |||
| ssptrf.f ssptri.f ssptrs.f sstegr.f sstein.f sstev.f sstevd.f sstevr.f | |||
| sstevx.f | |||
| ssycon.f ssyev.f ssyevd.f ssyevr.f ssyevx.f ssygs2.f | |||
| ssygst.f ssygv.f ssygvd.f ssygvx.f ssyrfs.f ssysv.f ssysvx.f | |||
| ssytd2.f ssytf2.f ssytrd.f ssytrf.f ssytri.f ssytri2.f ssytri2x.f | |||
| ssyswapr.f ssytrs.f ssytrs2.f ssyconv.f | |||
| ssytf2_rook.f ssytrf_rook.f ssytrs_rook.f | |||
| ssytri_rook.f ssycon_rook.f ssysv_rook.f | |||
| stbcon.f | |||
| stbrfs.f stbtrs.f stgevc.f stgex2.f stgexc.f stgsen.f | |||
| stgsja.f stgsna.f stgsy2.f stgsyl.f stpcon.f stprfs.f stptri.f | |||
| stptrs.f | |||
| strcon.f strevc.f strevc3.f strexc.f strrfs.f strsen.f strsna.f strsyl.f | |||
| strtrs.f DEPRECATED/stzrqf.f stzrzf.f sstemr.f | |||
| slansf.f spftrf.f spftri.f spftrs.f ssfrk.f stfsm.f stftri.f stfttp.f | |||
| stfttr.f stpttf.f stpttr.f strttf.f strttp.f | |||
| sgejsv.f sgesvj.f sgsvj0.f sgsvj1.f | |||
| sgeequb.f ssyequb.f spoequb.f sgbequb.f | |||
| sbbcsd.f slapmr.f sorbdb.f sorbdb1.f sorbdb2.f sorbdb3.f sorbdb4.f | |||
| sorbdb5.f sorbdb6.f sorcsd.f sorcsd2by1.f | |||
| sgeqrt.f sgeqrt2.f sgeqrt3.f sgemqrt.f | |||
| stpqrt.f stpqrt2.f stpmqrt.f stprfb.f spotri.f | |||
| sgelq.f sgelqt.f sgelqt3.f sgemlq.f sgemlqt.f sgemqr.f sgeqr.f sgetsls.f | |||
| slamswlq.f slamtsqr.f slaswlq.f slatsqr.f stplqt.f stplqt2.f stpmlqt.f | |||
| ssysv_aa.f ssytrf_aa.f ssytrs_aa.f slasyf_aa.f ssytf2_rk.f slasyf_rk.f | |||
| ssytrf_rk.f ssytrs_3.f ssycon_3.f ssytri_3.f ssytri_3x.f ssysv_rk.f | |||
| ssb2st_kernels.f ssbev_2stage.f ssbevd_2stage.f ssbevx_2stage.f | |||
| ssyev_2stage.f ssyevd_2stage.f ssyevr_2stage.f ssyevx_2stage.f | |||
| ssygv_2stage.f ssytrd_2stage.f ssytrd_sb2st.F ssytrd_sy2sb.f slarfy.f | |||
| ) | |||
| sbdsvdx.f sgbbrd.f sgbcon.f sgbequ.f sgbrfs.f sgbsv.f | |||
| sgbsvx.f sgbtf2.f sgbtrf.f sgbtrs.f sgebak.f sgebal.f sgebd2.f | |||
| sgebrd.f sgecon.f sgeequ.f sgees.f sgeesx.f sgeev.f sgeevx.f | |||
| sgehd2.f sgehrd.f sgelq2.f sgelqf.f | |||
| sgels.f sgelsd.f sgelss.f sgelsy.f sgeql2.f sgeqlf.f | |||
| sgeqp3.f sgeqr2.f sgeqr2p.f sgeqrf.f sgeqrfp.f sgerfs.f sgerq2.f sgerqf.f | |||
| sgesc2.f sgesdd.f sgesvd.f sgesvdx.f sgesvx.f sgetc2.f | |||
| sgetrf2.f sgetri.f | |||
| sggbak.f sggbal.f | |||
| sgges.f sgges3.f sggesx.f sggev.f sggev3.f sggevx.f | |||
| sggglm.f sgghrd.f sgghd3.f sgglse.f sggqrf.f | |||
| sggrqf.f sggsvd3.f sggsvp3.f sgtcon.f sgtrfs.f sgtsv.f | |||
| sgtsvx.f sgttrf.f sgttrs.f sgtts2.f shgeqz.f | |||
| shsein.f shseqr.f slabrd.f slacon.f slacn2.f | |||
| slaein.f slaexc.f slag2.f slags2.f slagtm.f slagv2.f slahqr.f | |||
| slahr2.f slaic1.f slaln2.f slals0.f slalsa.f slalsd.f | |||
| slangb.f slange.f slangt.f slanhs.f slansb.f slansp.f | |||
| slansy.f slantb.f slantp.f slantr.f slanv2.f | |||
| slapll.f slapmt.f | |||
| slaqgb.f slaqge.f slaqp2.f slaqps.f slaqsb.f slaqsp.f slaqsy.f | |||
| slaqr0.f slaqr1.f slaqr2.f slaqr3.f slaqr4.f slaqr5.f | |||
| slaqtr.f slar1v.f slar2v.f ilaslr.f ilaslc.f | |||
| slarf.f slarfb.f slarfg.f slarfgp.f slarft.f slarfx.f slarfy.f slargv.f | |||
| slarrv.f slartv.f | |||
| slarz.f slarzb.f slarzt.f slasy2.f | |||
| slasyf.f slasyf_rook.f slasyf_rk.f slasyf_aa.f | |||
| slatbs.f slatdf.f slatps.f slatrd.f slatrs.f slatrz.f | |||
| sopgtr.f sopmtr.f sorg2l.f sorg2r.f | |||
| sorgbr.f sorghr.f sorgl2.f sorglq.f sorgql.f sorgqr.f sorgr2.f | |||
| sorgrq.f sorgtr.f sorm2l.f sorm2r.f sorm22.f | |||
| sormbr.f sormhr.f sorml2.f sormlq.f sormql.f sormqr.f sormr2.f | |||
| sormr3.f sormrq.f sormrz.f sormtr.f spbcon.f spbequ.f spbrfs.f | |||
| spbstf.f spbsv.f spbsvx.f | |||
| spbtf2.f spbtrf.f spbtrs.f spocon.f spoequ.f sporfs.f sposv.f | |||
| sposvx.f spotrf2.f spotri.f spstrf.f spstf2.f | |||
| sppcon.f sppequ.f | |||
| spprfs.f sppsv.f sppsvx.f spptrf.f spptri.f spptrs.f sptcon.f | |||
| spteqr.f sptrfs.f sptsv.f sptsvx.f spttrs.f sptts2.f srscl.f | |||
| ssbev.f ssbevd.f ssbevx.f ssbgst.f ssbgv.f ssbgvd.f ssbgvx.f | |||
| ssbtrd.f sspcon.f sspev.f sspevd.f sspevx.f sspgst.f | |||
| sspgv.f sspgvd.f sspgvx.f ssprfs.f sspsv.f sspsvx.f ssptrd.f | |||
| ssptrf.f ssptri.f ssptrs.f sstegr.f sstein.f sstev.f sstevd.f sstevr.f | |||
| sstevx.f ssycon.f ssyev.f ssyevd.f ssyevr.f ssyevx.f ssygs2.f | |||
| ssygst.f ssygv.f ssygvd.f ssygvx.f ssyrfs.f ssysv.f ssysvx.f | |||
| ssytd2.f ssytf2.f ssytrd.f ssytrf.f ssytri.f ssytri2.f ssytri2x.f | |||
| ssyswapr.f ssytrs.f ssytrs2.f | |||
| ssyconv.f ssyconvf.f ssyconvf_rook.f | |||
| ssysv_aa.f ssysv_aa_2stage.f ssytrf_aa.f ssytrf_aa_2stage.f ssytrs_aa.f ssytrs_aa_2stage.f | |||
| ssytf2_rook.f ssytrf_rook.f ssytrs_rook.f | |||
| ssytri_rook.f ssycon_rook.f ssysv_rook.f | |||
| ssytf2_rk.f ssytrf_rk.f ssytrs_3.f | |||
| ssytri_3.f ssytri_3x.f ssycon_3.f ssysv_rk.f | |||
| ssysv_aa.f ssytrf_aa.f ssytrs_aa.f | |||
| stbcon.f | |||
| stbrfs.f stbtrs.f stgevc.f stgex2.f stgexc.f stgsen.f | |||
| stgsja.f stgsna.f stgsy2.f stgsyl.f stpcon.f stprfs.f stptri.f | |||
| stptrs.f | |||
| strcon.f strevc.f strevc3.f strexc.f strrfs.f strsen.f strsna.f strsyl.f | |||
| strtrs.f stzrzf.f sstemr.f | |||
| slansf.f spftrf.f spftri.f spftrs.f ssfrk.f stfsm.f stftri.f stfttp.f | |||
| stfttr.f stpttf.f stpttr.f strttf.f strttp.f | |||
| sgejsv.f sgesvj.f sgsvj0.f sgsvj1.f | |||
| sgeequb.f ssyequb.f spoequb.f sgbequb.f | |||
| sbbcsd.f slapmr.f sorbdb.f sorbdb1.f sorbdb2.f sorbdb3.f sorbdb4.f | |||
| sorbdb5.f sorbdb6.f sorcsd.f sorcsd2by1.f | |||
| sgeqrt.f sgeqrt2.f sgeqrt3.f sgemqrt.f | |||
| stpqrt.f stpqrt2.f stpmqrt.f stprfb.f | |||
| sgelqt.f sgelqt3.f sgemlqt.f | |||
| sgetsls.f sgeqr.f slatsqr.f slamtsqr.f sgemqr.f | |||
| sgelq.f slaswlq.f slamswlq.f sgemlq.f | |||
| stplqt.f stplqt2.f stpmlqt.f | |||
| ssytrd_2stage.f ssytrd_sy2sb.f ssytrd_sb2st.F ssb2st_kernels.f | |||
| ssyevd_2stage.f ssyev_2stage.f ssyevx_2stage.f ssyevr_2stage.f | |||
| ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f) | |||
| set(DSLASRC spotrs.f spotrf2.f) | |||
| set(SXLASRC sgesvxx.f sgerfsx.f sla_gerfsx_extended.f sla_geamv.f | |||
| sla_gercond.f sla_gerpvgrw.f ssysvxx.f ssyrfsx.f | |||
| sla_syrfsx_extended.f sla_syamv.f sla_syrcond.f sla_syrpvgrw.f | |||
| sposvxx.f sporfsx.f sla_porfsx_extended.f sla_porcond.f | |||
| sla_porpvgrw.f sgbsvxx.f sgbrfsx.f sla_gbrfsx_extended.f | |||
| sla_gbamv.f sla_gbrcond.f sla_gbrpvgrw.f sla_lin_berr.f slarscl2.f | |||
| slascl2.f sla_wwaddw.f) | |||
| set(CLASRC | |||
| cbdsqr.f cgbbrd.f cgbcon.f cgbequ.f cgbrfs.f cgbsv.f cgbsvx.f | |||
| cgbtf2.f cgbtrf.f cgbtrs.f cgebak.f cgebal.f cgebd2.f cgebrd.f | |||
| cgecon.f cgeequ.f cgees.f cgeesx.f cgeev.f cgeevx.f | |||
| DEPRECATED/cgegs.f DEPRECATED/cgegv.f cgehd2.f cgehrd.f cgelq2.f cgelqf.f | |||
| cgels.f cgelsd.f cgelss.f DEPRECATED/cgelsx.f cgelsy.f cgeql2.f cgeqlf.f cgeqp3.f | |||
| DEPRECATED/cgeqpf.f cgeqr2.f cgeqr2p.f cgeqrf.f cgeqrfp.f cgerfs.f | |||
| cgerq2.f cgerqf.f cgesc2.f cgesdd.f cgesvd.f | |||
| cgesvx.f cgetc2.f cgetri.f | |||
| cggbak.f cggbal.f cgges.f cggesx.f cggev.f cggevx.f cggglm.f | |||
| cgghrd.f cgglse.f cggqrf.f cggrqf.f | |||
| DEPRECATED/cggsvd.f DEPRECATED/cggsvp.f | |||
| cgtcon.f cgtrfs.f cgtsv.f cgtsvx.f cgttrf.f cgttrs.f cgtts2.f chbev.f | |||
| chbevd.f chbevx.f chbgst.f chbgv.f chbgvd.f chbgvx.f chbtrd.f | |||
| checon.f cheev.f cheevd.f cheevr.f cheevx.f chegs2.f chegst.f | |||
| chegv.f chegvd.f chegvx.f cherfs.f chesv.f chesvx.f chetd2.f | |||
| chetf2.f chetrd.f | |||
| chetrf.f chetri.f chetri2.f chetri2x.f cheswapr.f | |||
| chetrs.f chetrs2.f | |||
| chetf2_rook.f chetrf_rook.f chetri_rook.f chetrs_rook.f checon_rook.f chesv_rook.f | |||
| chgeqz.f chpcon.f chpev.f chpevd.f | |||
| chpevx.f chpgst.f chpgv.f chpgvd.f chpgvx.f chprfs.f chpsv.f | |||
| chpsvx.f | |||
| chptrd.f chptrf.f chptri.f chptrs.f chsein.f chseqr.f clabrd.f | |||
| clacgv.f clacon.f clacn2.f clacp2.f clacpy.f clacrm.f clacrt.f cladiv.f | |||
| claed0.f claed7.f claed8.f | |||
| claein.f claesy.f claev2.f clags2.f clagtm.f | |||
| clahef.f clahef_rook.f clahqr.f | |||
| DEPRECATED/clahrd.f clahr2.f claic1.f clals0.f clalsa.f clalsd.f clangb.f clange.f clangt.f | |||
| clanhb.f clanhe.f | |||
| clanhp.f clanhs.f clanht.f clansb.f clansp.f clansy.f clantb.f | |||
| clantp.f clantr.f clapll.f clapmt.f clarcm.f claqgb.f claqge.f | |||
| claqhb.f claqhe.f claqhp.f claqp2.f claqps.f claqsb.f | |||
| claqr0.f claqr1.f claqr2.f claqr3.f claqr4.f claqr5.f | |||
| claqsp.f claqsy.f clar1v.f clar2v.f ilaclr.f ilaclc.f | |||
| clarf.f clarfb.f clarfg.f clarft.f clarfgp.f | |||
| clarfx.f clargv.f clarnv.f clarrv.f clartg.f clartv.f | |||
| clarz.f clarzb.f clarzt.f clascl.f claset.f clasr.f classq.f | |||
| clasyf.f clasyf_rook.f clatbs.f clatdf.f clatps.f clatrd.f clatrs.f clatrz.f | |||
| DEPRECATED/clatzm.f cpbcon.f cpbequ.f cpbrfs.f cpbstf.f cpbsv.f | |||
| cpbsvx.f cpbtf2.f cpbtrf.f cpbtrs.f cpocon.f cpoequ.f cporfs.f | |||
| cposv.f cposvx.f cpstrf.f cpstf2.f | |||
| cppcon.f cppequ.f cpprfs.f cppsv.f cppsvx.f cpptrf.f cpptri.f cpptrs.f | |||
| cptcon.f cpteqr.f cptrfs.f cptsv.f cptsvx.f cpttrf.f cpttrs.f cptts2.f | |||
| crot.f cspcon.f csprfs.f cspsv.f | |||
| cspsvx.f csptrf.f csptri.f csptrs.f csrscl.f cstedc.f | |||
| cstegr.f cstein.f csteqr.f | |||
| csycon.f | |||
| csyrfs.f csysv.f csysvx.f csytf2.f csytrf.f csytri.f csytri2.f csytri2x.f | |||
| csyswapr.f csytrs.f csytrs2.f csyconv.f | |||
| csytf2_rook.f csytrf_rook.f csytrs_rook.f | |||
| csytri_rook.f csycon_rook.f csysv_rook.f | |||
| ctbcon.f ctbrfs.f ctbtrs.f ctgevc.f ctgex2.f | |||
| ctgexc.f ctgsen.f ctgsja.f ctgsna.f ctgsy2.f ctgsyl.f ctpcon.f | |||
| ctprfs.f ctptri.f | |||
| ctptrs.f ctrcon.f ctrevc.f ctrevc3.f ctrexc.f ctrrfs.f ctrsen.f ctrsna.f | |||
| ctrsyl.f ctrtrs.f DEPRECATED/ctzrqf.f ctzrzf.f cung2l.f cung2r.f | |||
| cungbr.f cunghr.f cungl2.f cunglq.f cungql.f cungqr.f cungr2.f | |||
| cungrq.f cungtr.f cunm2l.f cunm2r.f cunmbr.f cunmhr.f cunml2.f | |||
| cunmlq.f cunmql.f cunmqr.f cunmr2.f cunmr3.f cunmrq.f cunmrz.f | |||
| cunmtr.f cupgtr.f cupmtr.f icmax1.f scsum1.f cstemr.f | |||
| chfrk.f ctfttp.f clanhf.f cpftrf.f cpftri.f cpftrs.f ctfsm.f ctftri.f | |||
| ctfttr.f ctpttf.f ctpttr.f ctrttf.f ctrttp.f | |||
| cgeequb.f cgbequb.f csyequb.f cpoequb.f cheequb.f | |||
| cbbcsd.f clapmr.f cunbdb.f cunbdb1.f cunbdb2.f cunbdb3.f cunbdb4.f | |||
| cunbdb5.f cunbdb6.f cuncsd.f cuncsd2by1.f | |||
| cgeqrt.f cgeqrt2.f cgeqrt3.f cgemqrt.f | |||
| ctpqrt.f ctpqrt2.f ctpmqrt.f ctprfb.f cpotri.f | |||
| cgelq.f cgelqt.f cgelqt3.f cgemlq.f cgemlqt.f cgemqr.f cgeqr.f cgetsls.f | |||
| clamswlq.f clamtsqr.f claswlq.f clatsqr.f ctplqt.f ctplqt2.f ctpmlqt.f | |||
| chesv_aa.f chetrf_aa.f chetrs_aa.f clahef_aa.f csytf2_rk.f clasyf_rk.f | |||
| csytrf_rk.f csytrs_3.f csycon_3.f csytri_3.f csytri_3x.f csysv_rk.f | |||
| chetf2_rk.f clahef_rk.f chetrf_rk.f chetrs_3.f checon_3.f chetri_3.f | |||
| chetri_3x.f chesv_rk.f chb2st_kernels.f chbev_2stage.f chbevd_2stage.f | |||
| chbevx_2stage.f cheev_2stage.f cheevd_2stage.f cheevr_2stage.f cheevx_2stage.f | |||
| chegv_2stage.f chetrd_2stage.f chetrd_hb2st.F chetrd_he2hb.f clarfy.f | |||
| ) | |||
| cbdsqr.f cgbbrd.f cgbcon.f cgbequ.f cgbrfs.f cgbsv.f cgbsvx.f | |||
| cgbtf2.f cgbtrf.f cgbtrs.f cgebak.f cgebal.f cgebd2.f cgebrd.f | |||
| cgecon.f cgeequ.f cgees.f cgeesx.f cgeev.f cgeevx.f | |||
| cgehd2.f cgehrd.f cgelq2.f cgelqf.f | |||
| cgels.f cgelsd.f cgelss.f cgelsy.f cgeql2.f cgeqlf.f cgeqp3.f | |||
| cgeqr2.f cgeqr2p.f cgeqrf.f cgeqrfp.f cgerfs.f cgerq2.f cgerqf.f | |||
| cgesc2.f cgesdd.f cgesvd.f cgesvdx.f | |||
| cgesvj.f cgejsv.f cgsvj0.f cgsvj1.f | |||
| cgesvx.f cgetc2.f cgetrf2.f | |||
| cgetri.f | |||
| cggbak.f cggbal.f | |||
| cgges.f cgges3.f cggesx.f cggev.f cggev3.f cggevx.f | |||
| cggglm.f cgghrd.f cgghd3.f cgglse.f cggqrf.f cggrqf.f | |||
| cggsvd3.f cggsvp3.f | |||
| cgtcon.f cgtrfs.f cgtsv.f cgtsvx.f cgttrf.f cgttrs.f cgtts2.f chbev.f | |||
| chbevd.f chbevx.f chbgst.f chbgv.f chbgvd.f chbgvx.f chbtrd.f | |||
| checon.f cheev.f cheevd.f cheevr.f cheevx.f chegs2.f chegst.f | |||
| chegv.f chegvd.f chegvx.f cherfs.f chesv.f chesvx.f chetd2.f | |||
| chetf2.f chetrd.f | |||
| chetrf.f chetri.f chetri2.f chetri2x.f cheswapr.f | |||
| chetrs.f chetrs2.f | |||
| chetf2_rook.f chetrf_rook.f chetri_rook.f | |||
| chetrs_rook.f checon_rook.f chesv_rook.f | |||
| chetf2_rk.f chetrf_rk.f chetri_3.f chetri_3x.f | |||
| chetrs_3.f checon_3.f chesv_rk.f | |||
| chesv_aa.f chesv_aa_2stage.f chetrf_aa.f chetrf_aa_2stage.f chetrs_aa.f chetrs_aa_2stage.f | |||
| chgeqz.f chpcon.f chpev.f chpevd.f | |||
| chpevx.f chpgst.f chpgv.f chpgvd.f chpgvx.f chprfs.f chpsv.f | |||
| chpsvx.f | |||
| chptrd.f chptrf.f chptri.f chptrs.f chsein.f chseqr.f clabrd.f | |||
| clacgv.f clacon.f clacn2.f clacp2.f clacpy.f clacrm.f clacrt.f cladiv.f | |||
| claed0.f claed7.f claed8.f | |||
| claein.f claesy.f claev2.f clags2.f clagtm.f | |||
| clahef.f clahef_rook.f clahef_rk.f clahef_aa.f clahqr.f | |||
| clahr2.f claic1.f clals0.f clalsa.f clalsd.f clangb.f clange.f clangt.f | |||
| clanhb.f clanhe.f | |||
| clanhp.f clanhs.f clanht.f clansb.f clansp.f clansy.f clantb.f | |||
| clantp.f clantr.f clapll.f clapmt.f clarcm.f claqgb.f claqge.f | |||
| claqhb.f claqhe.f claqhp.f claqp2.f claqps.f claqsb.f | |||
| claqr0.f claqr1.f claqr2.f claqr3.f claqr4.f claqr5.f | |||
| claqsp.f claqsy.f clar1v.f clar2v.f ilaclr.f ilaclc.f | |||
| clarf.f clarfb.f clarfg.f clarfgp.f clarft.f | |||
| clarfx.f clarfy.f clargv.f clarnv.f clarrv.f clartg.f clartv.f | |||
| clarz.f clarzb.f clarzt.f clascl.f claset.f clasr.f classq.f | |||
| clasyf.f clasyf_rook.f clasyf_rk.f clasyf_aa.f | |||
| clatbs.f clatdf.f clatps.f clatrd.f clatrs.f clatrz.f | |||
| cpbcon.f cpbequ.f cpbrfs.f cpbstf.f cpbsv.f | |||
| cpbsvx.f cpbtf2.f cpbtrf.f cpbtrs.f cpocon.f cpoequ.f cporfs.f | |||
| cposv.f cposvx.f cpotrf2.f cpotri.f cpstrf.f cpstf2.f | |||
| cppcon.f cppequ.f cpprfs.f cppsv.f cppsvx.f cpptrf.f cpptri.f cpptrs.f | |||
| cptcon.f cpteqr.f cptrfs.f cptsv.f cptsvx.f cpttrf.f cpttrs.f cptts2.f | |||
| crot.f cspcon.f csprfs.f cspsv.f | |||
| cspsvx.f csptrf.f csptri.f csptrs.f csrscl.f cstedc.f | |||
| cstegr.f cstein.f csteqr.f csycon.f | |||
| csyrfs.f csysv.f csysvx.f csytf2.f csytrf.f csytri.f | |||
| csytri2.f csytri2x.f csyswapr.f | |||
| csytrs.f csytrs2.f | |||
| csyconv.f csyconvf.f csyconvf_rook.f | |||
| csytf2_rook.f csytrf_rook.f csytrs_rook.f | |||
| csytri_rook.f csycon_rook.f csysv_rook.f | |||
| csytf2_rk.f csytrf_rk.f csytrf_aa.f csytrf_aa_2stage.f csytrs_3.f csytrs_aa.f csytrs_aa_2stage.f | |||
| csytri_3.f csytri_3x.f csycon_3.f csysv_rk.f csysv_aa.f csysv_aa_2stage.f | |||
| ctbcon.f ctbrfs.f ctbtrs.f ctgevc.f ctgex2.f | |||
| ctgexc.f ctgsen.f ctgsja.f ctgsna.f ctgsy2.f ctgsyl.f ctpcon.f | |||
| ctprfs.f ctptri.f | |||
| ctptrs.f ctrcon.f ctrevc.f ctrevc3.f ctrexc.f ctrrfs.f ctrsen.f ctrsna.f | |||
| ctrsyl.f ctrtrs.f ctzrzf.f cung2l.f cung2r.f | |||
| cungbr.f cunghr.f cungl2.f cunglq.f cungql.f cungqr.f cungr2.f | |||
| cungrq.f cungtr.f cunm2l.f cunm2r.f cunmbr.f cunmhr.f cunml2.f cunm22.f | |||
| cunmlq.f cunmql.f cunmqr.f cunmr2.f cunmr3.f cunmrq.f cunmrz.f | |||
| cunmtr.f cupgtr.f cupmtr.f icmax1.f scsum1.f cstemr.f | |||
| chfrk.f ctfttp.f clanhf.f cpftrf.f cpftri.f cpftrs.f ctfsm.f ctftri.f | |||
| ctfttr.f ctpttf.f ctpttr.f ctrttf.f ctrttp.f | |||
| cgeequb.f cgbequb.f csyequb.f cpoequb.f cheequb.f | |||
| cbbcsd.f clapmr.f cunbdb.f cunbdb1.f cunbdb2.f cunbdb3.f cunbdb4.f | |||
| cunbdb5.f cunbdb6.f cuncsd.f cuncsd2by1.f | |||
| cgeqrt.f cgeqrt2.f cgeqrt3.f cgemqrt.f | |||
| ctpqrt.f ctpqrt2.f ctpmqrt.f ctprfb.f | |||
| cgelqt.f cgelqt3.f cgemlqt.f | |||
| cgetsls.f cgeqr.f clatsqr.f clamtsqr.f cgemqr.f | |||
| cgelq.f claswlq.f clamswlq.f cgemlq.f | |||
| ctplqt.f ctplqt2.f ctpmlqt.f | |||
| chetrd_2stage.f chetrd_he2hb.f chetrd_hb2st.F chb2st_kernels.f | |||
| cheevd_2stage.f cheev_2stage.f cheevx_2stage.f cheevr_2stage.f | |||
| chbev_2stage.f chbevx_2stage.f chbevd_2stage.f chegv_2stage.f) | |||
| set(ZCLASRC cpotrs.f) | |||
| set(CXLASRC cgesvxx.f cgerfsx.f cla_gerfsx_extended.f cla_geamv.f | |||
| cla_gercond_c.f cla_gercond_x.f cla_gerpvgrw.f | |||
| csysvxx.f csyrfsx.f cla_syrfsx_extended.f cla_syamv.f | |||
| cla_syrcond_c.f cla_syrcond_x.f cla_syrpvgrw.f | |||
| cposvxx.f cporfsx.f cla_porfsx_extended.f | |||
| cla_porcond_c.f cla_porcond_x.f cla_porpvgrw.f | |||
| cgbsvxx.f cgbrfsx.f cla_gbrfsx_extended.f cla_gbamv.f | |||
| cla_gbrcond_c.f cla_gbrcond_x.f cla_gbrpvgrw.f | |||
| chesvxx.f cherfsx.f cla_herfsx_extended.f cla_heamv.f | |||
| cla_hercond_c.f cla_hercond_x.f cla_herpvgrw.f | |||
| cla_lin_berr.f clarscl2.f clascl2.f cla_wwaddw.f) | |||
| set(DLASRC | |||
| dgbbrd.f dgbcon.f dgbequ.f dgbrfs.f dgbsv.f | |||
| dgbsvx.f dgbtf2.f dgbtrf.f dgbtrs.f dgebak.f dgebal.f dgebd2.f | |||
| dgebrd.f dgecon.f dgeequ.f dgees.f dgeesx.f dgeev.f dgeevx.f | |||
| DEPRECATED/dgegs.f DEPRECATED/dgegv.f dgehd2.f dgehrd.f dgelq2.f dgelqf.f | |||
| dgels.f dgelsd.f dgelss.f DEPRECATED/dgelsx.f dgelsy.f dgeql2.f dgeqlf.f | |||
| dgeqp3.f DEPRECATED/dgeqpf.f dgeqr2.f dgeqr2p.f dgeqrf.f dgeqrfp.f dgerfs.f | |||
| dgerq2.f dgerqf.f dgesc2.f dgesdd.f dgesvd.f dgesvdx.f dgesvx.f | |||
| dgetc2.f dgetri.f dgetrf2.f | |||
| dggbak.f dggbal.f dgges.f dgges3.f dggesx.f dggev.f dggev3.f dggevx.f | |||
| dggglm.f dgghd3.f dgghrd.f dgglse.f dggqrf.f | |||
| dggrqf.f dggsvd3.f dggsvp3.f DEPRECATED/dggsvd.f DEPRECATED/dggsvp.f dgtcon.f dgtrfs.f dgtsv.f | |||
| dgtsvx.f dgttrf.f dgttrs.f dgtts2.f dhgeqz.f | |||
| dhsein.f dhseqr.f dlabrd.f dlacon.f dlacn2.f | |||
| dlaein.f dlaexc.f dlag2.f dlags2.f dlagtm.f dlagv2.f dlahqr.f | |||
| DEPRECATED/dlahrd.f dlahr2.f dlaic1.f dlaln2.f dlals0.f dlalsa.f dlalsd.f | |||
| dlangb.f dlange.f dlangt.f dlanhs.f dlansb.f dlansp.f | |||
| dlansy.f dlantb.f dlantp.f dlantr.f dlanv2.f | |||
| dlapll.f dlapmt.f | |||
| dlaqgb.f dlaqge.f dlaqp2.f dlaqps.f dlaqsb.f dlaqsp.f dlaqsy.f | |||
| dlaqr0.f dlaqr1.f dlaqr2.f dlaqr3.f dlaqr4.f dlaqr5.f | |||
| dlaqtr.f dlar1v.f dlar2v.f iladlr.f iladlc.f | |||
| dlarf.f dlarfb.f dlarfg.f dlarfgp.f dlarft.f dlarfx.f | |||
| dlargv.f dlarrv.f dlartv.f | |||
| dlarz.f dlarzb.f dlarzt.f dlasy2.f dlasyf.f dlasyf_rook.f | |||
| dlatbs.f dlatdf.f dlatps.f dlatrd.f dlatrs.f dlatrz.f DEPRECATED/dlatzm.f | |||
| dopgtr.f dopmtr.f dorg2l.f dorg2r.f | |||
| dorgbr.f dorghr.f dorgl2.f dorglq.f dorgql.f dorgqr.f dorgr2.f | |||
| dorgrq.f dorgtr.f dorm2l.f dorm2r.f dorm22.f | |||
| dormbr.f dormhr.f dorml2.f dormlq.f dormql.f dormqr.f dormr2.f | |||
| dormr3.f dormrq.f dormrz.f dormtr.f dpbcon.f dpbequ.f dpbrfs.f | |||
| dpbstf.f dpbsv.f dpbsvx.f | |||
| dpbtf2.f dpbtrf.f dpbtrs.f dpocon.f dpoequ.f dporfs.f dposv.f | |||
| dposvx.f dpotrf2.f dpotrs.f dpstrf.f dpstf2.f | |||
| dppcon.f dppequ.f | |||
| dpprfs.f dppsv.f dppsvx.f dpptrf.f dpptri.f dpptrs.f dptcon.f | |||
| dpteqr.f dptrfs.f dptsv.f dptsvx.f dpttrs.f dptts2.f drscl.f | |||
| dsbev.f dsbevd.f dsbevx.f dsbgst.f dsbgv.f dsbgvd.f dsbgvx.f | |||
| dsbtrd.f dspcon.f dspev.f dspevd.f dspevx.f dspgst.f | |||
| dspgv.f dspgvd.f dspgvx.f dsprfs.f dspsv.f dspsvx.f dsptrd.f | |||
| dsptrf.f dsptri.f dsptrs.f dstegr.f dstein.f dstev.f dstevd.f dstevr.f | |||
| dstevx.f | |||
| dsycon.f dsyev.f dsyevd.f dsyevr.f | |||
| dsyevx.f dsygs2.f dsygst.f dsygv.f dsygvd.f dsygvx.f dsyrfs.f | |||
| dsysv.f dsysvx.f | |||
| dsytd2.f dsytf2.f dsytrd.f dsytrf.f dsytri.f dsytri2.f dsytri2x.f | |||
| dsyswapr.f dsytrs.f dsytrs2.f dsyconv.f | |||
| dsytf2_rook.f dsytrf_rook.f dsytrs_rook.f | |||
| dsytri_rook.f dsycon_rook.f dsysv_rook.f | |||
| dtbcon.f dtbrfs.f dtbtrs.f dtgevc.f dtgex2.f dtgexc.f dtgsen.f | |||
| dtgsja.f dtgsna.f dtgsy2.f dtgsyl.f dtpcon.f dtprfs.f dtptri.f | |||
| dtptrs.f | |||
| dtrcon.f dtrevc.f dtrevc3.f dtrexc.f dtrrfs.f dtrsen.f dtrsna.f dtrsyl.f | |||
| dtrtrs.f DEPRECATED/dtzrqf.f dtzrzf.f dstemr.f | |||
| dsgesv.f dsposv.f dlag2s.f slag2d.f dlat2s.f | |||
| dlansf.f dpftrf.f dpftri.f dpftrs.f dsfrk.f dtfsm.f dtftri.f dtfttp.f | |||
| dtfttr.f dtpttf.f dtpttr.f dtrttf.f dtrttp.f | |||
| dgejsv.f dgesvj.f dgsvj0.f dgsvj1.f | |||
| dgeequb.f dsyequb.f dpoequb.f dgbequb.f | |||
| dbbcsd.f dlapmr.f dorbdb.f dorbdb1.f dorbdb2.f dorbdb3.f dorbdb4.f | |||
| dorbdb5.f dorbdb6.f dorcsd.f dorcsd2by1.f | |||
| dgeqrt.f dgeqrt2.f dgeqrt3.f dgemqrt.f | |||
| dtpqrt.f dtpqrt2.f dtpmqrt.f dtprfb.f dpotri.f | |||
| dgelq.f dgelqt.f dgelqt3.f dgemlq.f dgemlqt.f dgemqr.f dgeqr.f dgetsls.f | |||
| dlamswlq.f dlamtsqr.f dlaswlq.f dlatsqr.f dtplqt.f dtplqt2.f dtpmlqt.f | |||
| dsysv_aa.f dsytrf_aa.f dsytrs_aa.f dlasyf_aa.f dsytf2_rk.f dlasyf_rk.f | |||
| dsytrf_rk.f dsytrs_3.f dsycon_3.f dsytri_3.f dsytri_3x.f dsysv_rk.f | |||
| dsb2st_kernels.f dsbev_2stage.f dsbevd_2stage.f dsbevx_2stage.f | |||
| dsyev_2stage.f dsyevd_2stage.f dsyevr_2stage.f dsyevx_2stage.f | |||
| dsygv_2stage.f dsytrd_2stage.f dsytrd_sb2st.F dsytrd_sy2sb.f dlarfy.f | |||
| ) | |||
| dbdsvdx.f dgbbrd.f dgbcon.f dgbequ.f dgbrfs.f dgbsv.f | |||
| dgbsvx.f dgbtf2.f dgbtrf.f dgbtrs.f dgebak.f dgebal.f dgebd2.f | |||
| dgebrd.f dgecon.f dgeequ.f dgees.f dgeesx.f dgeev.f dgeevx.f | |||
| dgehd2.f dgehrd.f dgelq2.f dgelqf.f | |||
| dgels.f dgelsd.f dgelss.f dgelsy.f dgeql2.f dgeqlf.f | |||
| dgeqp3.f dgeqr2.f dgeqr2p.f dgeqrf.f dgeqrfp.f dgerfs.f dgerq2.f dgerqf.f | |||
| dgesc2.f dgesdd.f dgesvd.f dgesvdx.f dgesvx.f dgetc2.f | |||
| dgetrf2.f dgetri.f | |||
| dggbak.f dggbal.f | |||
| dgges.f dgges3.f dggesx.f dggev.f dggev3.f dggevx.f | |||
| dggglm.f dgghrd.f dgghd3.f dgglse.f dggqrf.f | |||
| dggrqf.f dggsvd3.f dggsvp3.f dgtcon.f dgtrfs.f dgtsv.f | |||
| dgtsvx.f dgttrf.f dgttrs.f dgtts2.f dhgeqz.f | |||
| dhsein.f dhseqr.f dlabrd.f dlacon.f dlacn2.f | |||
| dlaein.f dlaexc.f dlag2.f dlags2.f dlagtm.f dlagv2.f dlahqr.f | |||
| dlahr2.f dlaic1.f dlaln2.f dlals0.f dlalsa.f dlalsd.f | |||
| dlangb.f dlange.f dlangt.f dlanhs.f dlansb.f dlansp.f | |||
| dlansy.f dlantb.f dlantp.f dlantr.f dlanv2.f | |||
| dlapll.f dlapmt.f | |||
| dlaqgb.f dlaqge.f dlaqp2.f dlaqps.f dlaqsb.f dlaqsp.f dlaqsy.f | |||
| dlaqr0.f dlaqr1.f dlaqr2.f dlaqr3.f dlaqr4.f dlaqr5.f | |||
| dlaqtr.f dlar1v.f dlar2v.f iladlr.f iladlc.f | |||
| dlarf.f dlarfb.f dlarfg.f dlarfgp.f dlarft.f dlarfx.f dlarfy.f | |||
| dlargv.f dlarrv.f dlartv.f | |||
| dlarz.f dlarzb.f dlarzt.f dlasy2.f | |||
| dlasyf.f dlasyf_rook.f dlasyf_rk.f dlasyf_aa.f | |||
| dlatbs.f dlatdf.f dlatps.f dlatrd.f dlatrs.f dlatrz.f | |||
| dopgtr.f dopmtr.f dorg2l.f dorg2r.f | |||
| dorgbr.f dorghr.f dorgl2.f dorglq.f dorgql.f dorgqr.f dorgr2.f | |||
| dorgrq.f dorgtr.f dorm2l.f dorm2r.f dorm22.f | |||
| dormbr.f dormhr.f dorml2.f dormlq.f dormql.f dormqr.f dormr2.f | |||
| dormr3.f dormrq.f dormrz.f dormtr.f dpbcon.f dpbequ.f dpbrfs.f | |||
| dpbstf.f dpbsv.f dpbsvx.f | |||
| dpbtf2.f dpbtrf.f dpbtrs.f dpocon.f dpoequ.f dporfs.f dposv.f | |||
| dposvx.f dpotrf2.f dpotri.f dpotrs.f dpstrf.f dpstf2.f | |||
| dppcon.f dppequ.f | |||
| dpprfs.f dppsv.f dppsvx.f dpptrf.f dpptri.f dpptrs.f dptcon.f | |||
| dpteqr.f dptrfs.f dptsv.f dptsvx.f dpttrs.f dptts2.f drscl.f | |||
| dsbev.f dsbevd.f dsbevx.f dsbgst.f dsbgv.f dsbgvd.f dsbgvx.f | |||
| dsbtrd.f dspcon.f dspev.f dspevd.f dspevx.f dspgst.f | |||
| dspgv.f dspgvd.f dspgvx.f dsprfs.f dspsv.f dspsvx.f dsptrd.f | |||
| dsptrf.f dsptri.f dsptrs.f dstegr.f dstein.f dstev.f dstevd.f dstevr.f | |||
| dstevx.f dsycon.f dsyev.f dsyevd.f dsyevr.f | |||
| dsyevx.f dsygs2.f dsygst.f dsygv.f dsygvd.f dsygvx.f dsyrfs.f | |||
| dsysv.f dsysvx.f | |||
| dsytd2.f dsytf2.f dsytrd.f dsytrf.f dsytri.f dsytrs.f dsytrs2.f | |||
| dsytri2.f dsytri2x.f dsyswapr.f | |||
| dsyconv.f dsyconvf.f dsyconvf_rook.f | |||
| dsytf2_rook.f dsytrf_rook.f dsytrs_rook.f | |||
| dsytri_rook.f dsycon_rook.f dsysv_rook.f | |||
| dsytf2_rk.f dsytrf_rk.f dsytrs_3.f | |||
| dsytri_3.f dsytri_3x.f dsycon_3.f dsysv_rk.f | |||
| dsysv_aa.f dsysv_aa_2stage.f dsytrf_aa.f dsytrf_aa_2stage.f dsytrs_aa.f dsytrs_aa_2stage.f | |||
| dtbcon.f | |||
| dtbrfs.f dtbtrs.f dtgevc.f dtgex2.f dtgexc.f dtgsen.f | |||
| dtgsja.f dtgsna.f dtgsy2.f dtgsyl.f dtpcon.f dtprfs.f dtptri.f | |||
| dtptrs.f | |||
| dtrcon.f dtrevc.f dtrevc3.f dtrexc.f dtrrfs.f dtrsen.f dtrsna.f dtrsyl.f | |||
| dtrtrs.f dtzrzf.f dstemr.f | |||
| dsgesv.f dsposv.f dlag2s.f slag2d.f dlat2s.f | |||
| dlansf.f dpftrf.f dpftri.f dpftrs.f dsfrk.f dtfsm.f dtftri.f dtfttp.f | |||
| dtfttr.f dtpttf.f dtpttr.f dtrttf.f dtrttp.f | |||
| dgejsv.f dgesvj.f dgsvj0.f dgsvj1.f | |||
| dgeequb.f dsyequb.f dpoequb.f dgbequb.f | |||
| dbbcsd.f dlapmr.f dorbdb.f dorbdb1.f dorbdb2.f dorbdb3.f dorbdb4.f | |||
| dorbdb5.f dorbdb6.f dorcsd.f dorcsd2by1.f | |||
| dgeqrt.f dgeqrt2.f dgeqrt3.f dgemqrt.f | |||
| dtpqrt.f dtpqrt2.f dtpmqrt.f dtprfb.f | |||
| dgelqt.f dgelqt3.f dgemlqt.f | |||
| dgetsls.f dgeqr.f dlatsqr.f dlamtsqr.f dgemqr.f | |||
| dgelq.f dlaswlq.f dlamswlq.f dgemlq.f | |||
| dtplqt.f dtplqt2.f dtpmlqt.f | |||
| dsytrd_2stage.f dsytrd_sy2sb.f dsytrd_sb2st.F dsb2st_kernels.f | |||
| dsyevd_2stage.f dsyev_2stage.f dsyevx_2stage.f dsyevr_2stage.f | |||
| dsbev_2stage.f dsbevx_2stage.f dsbevd_2stage.f dsygv_2stage.f) | |||
| set(DXLASRC dgesvxx.f dgerfsx.f dla_gerfsx_extended.f dla_geamv.f | |||
| dla_gercond.f dla_gerpvgrw.f dsysvxx.f dsyrfsx.f | |||
| dla_syrfsx_extended.f dla_syamv.f dla_syrcond.f dla_syrpvgrw.f | |||
| dposvxx.f dporfsx.f dla_porfsx_extended.f dla_porcond.f | |||
| dla_porpvgrw.f dgbsvxx.f dgbrfsx.f dla_gbrfsx_extended.f | |||
| dla_gbamv.f dla_gbrcond.f dla_gbrpvgrw.f dla_lin_berr.f dlarscl2.f | |||
| dlascl2.f dla_wwaddw.f) | |||
| set(ZLASRC | |||
| zbdsqr.f zgbbrd.f zgbcon.f zgbequ.f zgbrfs.f zgbsv.f zgbsvx.f | |||
| zgbtf2.f zgbtrf.f zgbtrs.f zgebak.f zgebal.f zgebd2.f zgebrd.f | |||
| zgecon.f zgeequ.f zgees.f zgeesx.f zgeev.f zgeevx.f | |||
| DEPRECATED/zgegs.f DEPRECATED/zgegv.f zgehd2.f zgehrd.f zgejsv.f zgelq2.f zgelqf.f | |||
| zgels.f zgelsd.f zgelss.f DEPRECATED/zgelsx.f zgelsy.f zgeql2.f zgeqlf.f zgeqp3.f | |||
| DEPRECATED/zgeqpf.f zgeqr2.f zgeqr2p.f zgeqrf.f zgeqrfp.f zgerfs.f zgerq2.f zgerqf.f | |||
| zgesc2.f zgesdd.f zgesvd.f zgesvdx.f zgesvj.f zgesvx.f zgetc2.f | |||
| zgetri.f zgetrf2.f | |||
| zggbak.f zggbal.f zgges.f zgges3.f zggesx.f zggev.f zggev3.f zggevx.f zggglm.f | |||
| zgghd3.f zgghrd.f zgglse.f zggqrf.f zggrqf.f | |||
| DEPRECATED/zggsvd.f zggsvd3.f DEPRECATED/zggsvp.f zggsvp3.f | |||
| zgsvj0.f zgsvj1.f | |||
| zgtcon.f zgtrfs.f zgtsv.f zgtsvx.f zgttrf.f zgttrs.f zgtts2.f zhbev.f | |||
| zhbevd.f zhbevx.f zhbgst.f zhbgv.f zhbgvd.f zhbgvx.f zhbtrd.f | |||
| zhecon.f zheev.f zheevd.f zheevr.f zheevx.f zhegs2.f zhegst.f | |||
| zhegv.f zhegvd.f zhegvx.f zherfs.f zhesv.f zhesvx.f zhetd2.f | |||
| zhetf2.f zhetrd.f | |||
| zhetrf.f zhetri.f zhetri2.f zhetri2x.f zheswapr.f | |||
| zhetrs.f zhetrs2.f | |||
| zhetf2_rook.f zhetrf_rook.f zhetri_rook.f zhetrs_rook.f zhecon_rook.f zhesv_rook.f | |||
| zhgeqz.f zhpcon.f zhpev.f zhpevd.f | |||
| zhpevx.f zhpgst.f zhpgv.f zhpgvd.f zhpgvx.f zhprfs.f zhpsv.f | |||
| zhpsvx.f | |||
| zhptrd.f zhptrf.f zhptri.f zhptrs.f zhsein.f zhseqr.f zlabrd.f | |||
| zlacgv.f zlacon.f zlacn2.f zlacp2.f zlacpy.f zlacrm.f zlacrt.f zladiv.f | |||
| zlaed0.f zlaed7.f zlaed8.f | |||
| zlaein.f zlaesy.f zlaev2.f zlags2.f zlagtm.f | |||
| zlahef.f zlahef_rook.f zlahqr.f | |||
| DEPRECATED/zlahrd.f zlahr2.f zlaic1.f zlals0.f zlalsa.f zlalsd.f zlangb.f zlange.f | |||
| zlangt.f zlanhb.f | |||
| zlanhe.f | |||
| zlanhp.f zlanhs.f zlanht.f zlansb.f zlansp.f zlansy.f zlantb.f | |||
| zlantp.f zlantr.f zlapll.f zlapmt.f zlaqgb.f zlaqge.f | |||
| zlaqhb.f zlaqhe.f zlaqhp.f zlaqp2.f zlaqps.f zlaqsb.f | |||
| zlaqr0.f zlaqr1.f zlaqr2.f zlaqr3.f zlaqr4.f zlaqr5.f | |||
| zlaqsp.f zlaqsy.f zlar1v.f zlar2v.f ilazlr.f ilazlc.f | |||
| zlarcm.f zlarf.f zlarfb.f | |||
| zlarfg.f zlarft.f zlarfgp.f | |||
| zlarfx.f zlargv.f zlarnv.f zlarrv.f zlartg.f zlartv.f | |||
| zlarz.f zlarzb.f zlarzt.f zlascl.f zlaset.f zlasr.f | |||
| zlassq.f zlasyf.f zlasyf_rook.f zlasyf_aa.f | |||
| zlatbs.f zlatdf.f zlatps.f zlatrd.f zlatrs.f zlatrz.f DEPRECATED/zlatzm.f | |||
| zpbcon.f zpbequ.f zpbrfs.f zpbstf.f zpbsv.f | |||
| zpbsvx.f zpbtf2.f zpbtrf.f zpbtrs.f zpocon.f zpoequ.f zporfs.f | |||
| zposv.f zposvx.f zpotrf2.f zpotrs.f zpstrf.f zpstf2.f | |||
| zppcon.f zppequ.f zpprfs.f zppsv.f zppsvx.f zpptrf.f zpptri.f zpptrs.f | |||
| zptcon.f zpteqr.f zptrfs.f zptsv.f zptsvx.f zpttrf.f zpttrs.f zptts2.f | |||
| zrot.f zspcon.f zsprfs.f zspsv.f | |||
| zspsvx.f zsptrf.f zsptri.f zsptrs.f zdrscl.f zstedc.f | |||
| zstegr.f zstein.f zsteqr.f | |||
| zsycon.f zsysv_aa.f | |||
| zsyrfs.f zsysv.f zsysvx.f zsytf2.f zsytrf.f zsytri.f zsytri2.f zsytri2x.f | |||
| zsyswapr.f zsytrs.f zsytrs_aa.f zsytrs2.f zsyconv.f | |||
| zsytf2_rook.f zsytrf_rook.f zsytrs_rook.f | |||
| zsytri_rook.f zsycon_rook.f zsysv_rook.f | |||
| ztbcon.f ztbrfs.f ztbtrs.f ztgevc.f ztgex2.f | |||
| ztgexc.f ztgsen.f ztgsja.f ztgsna.f ztgsy2.f ztgsyl.f ztpcon.f | |||
| ztprfs.f ztptri.f | |||
| ztptrs.f ztrcon.f ztrevc.f ztrevc3.f ztrexc.f ztrrfs.f ztrsen.f ztrsna.f | |||
| ztrsyl.f ztrtrs.f DEPRECATED/ztzrqf.f ztzrzf.f zung2l.f | |||
| zung2r.f zungbr.f zunghr.f zungl2.f zunglq.f zungql.f zungqr.f zungr2.f | |||
| zungrq.f zungtr.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunm22.f zunml2.f | |||
| zunmlq.f zunmql.f zunmqr.f zunmr2.f zunmr3.f zunmrq.f zunmrz.f | |||
| zunmtr.f zupgtr.f | |||
| zupmtr.f izmax1.f dzsum1.f zstemr.f | |||
| zcgesv.f zcposv.f zlag2c.f clag2z.f zlat2c.f | |||
| zhfrk.f ztfttp.f zlanhf.f zpftrf.f zpftri.f zpftrs.f ztfsm.f ztftri.f | |||
| ztfttr.f ztpttf.f ztpttr.f ztrttf.f ztrttp.f | |||
| zgeequb.f zgbequb.f zsyequb.f zpoequb.f zheequb.f | |||
| zbbcsd.f zlapmr.f zunbdb.f zunbdb1.f zunbdb2.f zunbdb3.f zunbdb4.f | |||
| zunbdb5.f zunbdb6.f zuncsd.f zuncsd2by1.f | |||
| zgeqrt.f zgeqrt2.f zgeqrt3.f zgemqrt.f | |||
| ztpqrt.f ztpqrt2.f ztpmqrt.f ztprfb.f zpotri.f | |||
| zgelq.f zgelqt.f zgelqt3.f zgemlq.f zgemlqt.f zgemqr.f zgeqr.f zgetsls.f | |||
| zlamswlq.f zlamtsqr.f zlaswlq.f zlatsqr.f ztplqt.f ztplqt2.f ztpmlqt.f | |||
| zhesv_aa.f zhetrf_aa.f zhetrs_aa.f zlahef_aa.f zsytf2_rk.f zlasyf_rk.f | |||
| zsytrf_aa.f zsytrf_rk.f zsytrs_3.f zsycon_3.f zsytri_3.f zsytri_3x.f zsysv_rk.f | |||
| zhetf2_rk.f zlahef_rk.f zhetrf_rk.f zhetrs_3.f zhecon_3.f zhetri_3.f | |||
| zhetri_3x.f zhesv_rk.f zhb2st_kernels.f zhbev_2stage.f zhbevd_2stage.f | |||
| zhbevx_2stage.f zheev_2stage.f zheevd_2stage.f zheevr_2stage.f | |||
| zheevx_2stage.f zhegv_2stage.f zhetrd_2stage.f zhetrd_hb2st.F zhetrd_he2hb.f | |||
| zlarfy.f | |||
| ) | |||
| zbdsqr.f zgbbrd.f zgbcon.f zgbequ.f zgbrfs.f zgbsv.f zgbsvx.f | |||
| zgbtf2.f zgbtrf.f zgbtrs.f zgebak.f zgebal.f zgebd2.f zgebrd.f | |||
| zgecon.f zgeequ.f zgees.f zgeesx.f zgeev.f zgeevx.f | |||
| zgehd2.f zgehrd.f zgelq2.f zgelqf.f | |||
| zgels.f zgelsd.f zgelss.f zgelsy.f zgeql2.f zgeqlf.f zgeqp3.f | |||
| zgeqr2.f zgeqr2p.f zgeqrf.f zgeqrfp.f zgerfs.f zgerq2.f zgerqf.f | |||
| zgesc2.f zgesdd.f zgesvd.f zgesvdx.f zgesvx.f | |||
| zgesvj.f zgejsv.f zgsvj0.f zgsvj1.f | |||
| zgetc2.f zgetrf2.f | |||
| zgetri.f | |||
| zggbak.f zggbal.f | |||
| zgges.f zgges3.f zggesx.f zggev.f zggev3.f zggevx.f | |||
| zggglm.f zgghrd.f zgghd3.f zgglse.f zggqrf.f zggrqf.f | |||
| zggsvd3.f zggsvp3.f | |||
| zgtcon.f zgtrfs.f zgtsv.f zgtsvx.f zgttrf.f zgttrs.f zgtts2.f zhbev.f | |||
| zhbevd.f zhbevx.f zhbgst.f zhbgv.f zhbgvd.f zhbgvx.f zhbtrd.f | |||
| zhecon.f zheev.f zheevd.f zheevr.f zheevx.f zhegs2.f zhegst.f | |||
| zhegv.f zhegvd.f zhegvx.f zherfs.f zhesv.f zhesvx.f zhetd2.f | |||
| zhetf2.f zhetrd.f | |||
| zhetrf.f zhetri.f zhetri2.f zhetri2x.f zheswapr.f | |||
| zhetrs.f zhetrs2.f | |||
| zhetf2_rook.f zhetrf_rook.f zhetri_rook.f | |||
| zhetrs_rook.f zhecon_rook.f zhesv_rook.f | |||
| zhetf2_rk.f zhetrf_rk.f zhetri_3.f zhetri_3x.f | |||
| zhetrs_3.f zhecon_3.f zhesv_rk.f | |||
| zhesv_aa.f zhesv_aa_2stage.f zhetrf_aa.f zhetrf_aa_2stage.f zhetrs_aa.f zhetrs_aa_2stage.f | |||
| zhgeqz.f zhpcon.f zhpev.f zhpevd.f | |||
| zhpevx.f zhpgst.f zhpgv.f zhpgvd.f zhpgvx.f zhprfs.f zhpsv.f | |||
| zhpsvx.f | |||
| zhptrd.f zhptrf.f zhptri.f zhptrs.f zhsein.f zhseqr.f zlabrd.f | |||
| zlacgv.f zlacon.f zlacn2.f zlacp2.f zlacpy.f zlacrm.f zlacrt.f zladiv.f | |||
| zlaed0.f zlaed7.f zlaed8.f | |||
| zlaein.f zlaesy.f zlaev2.f zlags2.f zlagtm.f | |||
| zlahef.f zlahef_rook.f zlahef_rk.f zlahef_aa.f zlahqr.f | |||
| zlahr2.f zlaic1.f zlals0.f zlalsa.f zlalsd.f zlangb.f zlange.f | |||
| zlangt.f zlanhb.f | |||
| zlanhe.f | |||
| zlanhp.f zlanhs.f zlanht.f zlansb.f zlansp.f zlansy.f zlantb.f | |||
| zlantp.f zlantr.f zlapll.f zlapmt.f zlaqgb.f zlaqge.f | |||
| zlaqhb.f zlaqhe.f zlaqhp.f zlaqp2.f zlaqps.f zlaqsb.f | |||
| zlaqr0.f zlaqr1.f zlaqr2.f zlaqr3.f zlaqr4.f zlaqr5.f | |||
| zlaqsp.f zlaqsy.f zlar1v.f zlar2v.f ilazlr.f ilazlc.f | |||
| zlarcm.f zlarf.f zlarfb.f | |||
| zlarfg.f zlarfgp.f zlarft.f | |||
| zlarfx.f zlarfy.f zlargv.f zlarnv.f zlarrv.f zlartg.f zlartv.f | |||
| zlarz.f zlarzb.f zlarzt.f zlascl.f zlaset.f zlasr.f | |||
| zlassq.f zlasyf.f zlasyf_rook.f zlasyf_rk.f zlasyf_aa.f | |||
| zlatbs.f zlatdf.f zlatps.f zlatrd.f zlatrs.f zlatrz.f | |||
| zpbcon.f zpbequ.f zpbrfs.f zpbstf.f zpbsv.f | |||
| zpbsvx.f zpbtf2.f zpbtrf.f zpbtrs.f zpocon.f zpoequ.f zporfs.f | |||
| zposv.f zposvx.f zpotrf2.f zpotri.f zpotrs.f zpstrf.f zpstf2.f | |||
| zppcon.f zppequ.f zpprfs.f zppsv.f zppsvx.f zpptrf.f zpptri.f zpptrs.f | |||
| zptcon.f zpteqr.f zptrfs.f zptsv.f zptsvx.f zpttrf.f zpttrs.f zptts2.f | |||
| zrot.f zspcon.f zsprfs.f zspsv.f | |||
| zspsvx.f zsptrf.f zsptri.f zsptrs.f zdrscl.f zstedc.f | |||
| zstegr.f zstein.f zsteqr.f zsycon.f | |||
| zsyrfs.f zsysv.f zsysvx.f zsytf2.f zsytrf.f zsytri.f | |||
| zsytri2.f zsytri2x.f zsyswapr.f | |||
| zsytrs.f zsytrs2.f | |||
| zsyconv.f zsyconvf.f zsyconvf_rook.f | |||
| zsytf2_rook.f zsytrf_rook.f zsytrs_rook.f zsytrs_aa.f zsytrs_aa_2stage.f | |||
| zsytri_rook.f zsycon_rook.f zsysv_rook.f | |||
| zsytf2_rk.f zsytrf_rk.f zsytrf_aa.f zsytrf_aa_2stage.f zsytrs_3.f | |||
| zsytri_3.f zsytri_3x.f zsycon_3.f zsysv_rk.f zsysv_aa.f zsysv_aa_2stage.f | |||
| ztbcon.f ztbrfs.f ztbtrs.f ztgevc.f ztgex2.f | |||
| ztgexc.f ztgsen.f ztgsja.f ztgsna.f ztgsy2.f ztgsyl.f ztpcon.f | |||
| ztprfs.f ztptri.f | |||
| ztptrs.f ztrcon.f ztrevc.f ztrevc3.f ztrexc.f ztrrfs.f ztrsen.f ztrsna.f | |||
| ztrsyl.f ztrtrs.f ztzrzf.f zung2l.f | |||
| zung2r.f zungbr.f zunghr.f zungl2.f zunglq.f zungql.f zungqr.f zungr2.f | |||
| zungrq.f zungtr.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunml2.f zunm22.f | |||
| zunmlq.f zunmql.f zunmqr.f zunmr2.f zunmr3.f zunmrq.f zunmrz.f | |||
| zunmtr.f zupgtr.f | |||
| zupmtr.f izmax1.f dzsum1.f zstemr.f | |||
| zcgesv.f zcposv.f zlag2c.f clag2z.f zlat2c.f | |||
| zhfrk.f ztfttp.f zlanhf.f zpftrf.f zpftri.f zpftrs.f ztfsm.f ztftri.f | |||
| ztfttr.f ztpttf.f ztpttr.f ztrttf.f ztrttp.f | |||
| zgeequb.f zgbequb.f zsyequb.f zpoequb.f zheequb.f | |||
| zbbcsd.f zlapmr.f zunbdb.f zunbdb1.f zunbdb2.f zunbdb3.f zunbdb4.f | |||
| zunbdb5.f zunbdb6.f zuncsd.f zuncsd2by1.f | |||
| zgeqrt.f zgeqrt2.f zgeqrt3.f zgemqrt.f | |||
| ztpqrt.f ztpqrt2.f ztpmqrt.f ztprfb.f | |||
| ztplqt.f ztplqt2.f ztpmlqt.f | |||
| zgelqt.f zgelqt3.f zgemlqt.f | |||
| zgetsls.f zgeqr.f zlatsqr.f zlamtsqr.f zgemqr.f | |||
| zgelq.f zlaswlq.f zlamswlq.f zgemlq.f | |||
| zhetrd_2stage.f zhetrd_he2hb.f zhetrd_hb2st.F zhb2st_kernels.f | |||
| zheevd_2stage.f zheev_2stage.f zheevx_2stage.f zheevr_2stage.f | |||
| zhbev_2stage.f zhbevx_2stage.f zhbevd_2stage.f zhegv_2stage.f) | |||
| set(ZXLASRC zgesvxx.f zgerfsx.f zla_gerfsx_extended.f zla_geamv.f | |||
| zla_gercond_c.f zla_gercond_x.f zla_gerpvgrw.f zsysvxx.f zsyrfsx.f | |||
| zla_syrfsx_extended.f zla_syamv.f zla_syrcond_c.f zla_syrcond_x.f | |||
| zla_syrpvgrw.f zposvxx.f zporfsx.f zla_porfsx_extended.f | |||
| zla_porcond_c.f zla_porcond_x.f zla_porpvgrw.f zgbsvxx.f zgbrfsx.f | |||
| zla_gbrfsx_extended.f zla_gbamv.f zla_gbrcond_c.f zla_gbrcond_x.f | |||
| zla_gbrpvgrw.f zhesvxx.f zherfsx.f zla_herfsx_extended.f | |||
| zla_heamv.f zla_hercond_c.f zla_hercond_x.f zla_herpvgrw.f | |||
| zla_lin_berr.f zlarscl2.f zlascl2.f zla_wwaddw.f) | |||
| set(LA_REL_SRC ${ALLAUX}) | |||
| if (BUILD_SINGLE) | |||
| list(APPEND LA_REL_SRC ${SLASRC} ${DSLASRC} ${SCLAUX}) | |||
| endif () | |||
| if(USE_XBLAS) | |||
| set(ALLXOBJ ${SXLASRC} ${DXLASRC} ${CXLASRC} ${ZXLASRC}) | |||
| endif() | |||
| if (BUILD_DOUBLE) | |||
| list(APPEND LA_REL_SRC ${DLASRC} ${DSLASRC} ${DZLAUX}) | |||
| endif () | |||
| list(APPEND SLASRC DEPRECATED/sgegs.f DEPRECATED/sgegv.f | |||
| DEPRECATED/sgeqpf.f DEPRECATED/sgelsx.f DEPRECATED/sggsvd.f | |||
| DEPRECATED/sggsvp.f DEPRECATED/slahrd.f DEPRECATED/slatzm.f DEPRECATED/stzrqf.f) | |||
| list(APPEND DLASRC DEPRECATED/dgegs.f DEPRECATED/dgegv.f | |||
| DEPRECATED/dgeqpf.f DEPRECATED/dgelsx.f DEPRECATED/dggsvd.f | |||
| DEPRECATED/dggsvp.f DEPRECATED/dlahrd.f DEPRECATED/dlatzm.f DEPRECATED/dtzrqf.f) | |||
| list(APPEND CLASRC DEPRECATED/cgegs.f DEPRECATED/cgegv.f | |||
| DEPRECATED/cgeqpf.f DEPRECATED/cgelsx.f DEPRECATED/cggsvd.f | |||
| DEPRECATED/cggsvp.f DEPRECATED/clahrd.f DEPRECATED/clatzm.f DEPRECATED/ctzrqf.f) | |||
| list(APPEND ZLASRC DEPRECATED/zgegs.f DEPRECATED/zgegv.f | |||
| DEPRECATED/zgeqpf.f DEPRECATED/zgelsx.f DEPRECATED/zggsvd.f | |||
| DEPRECATED/zggsvp.f DEPRECATED/zlahrd.f DEPRECATED/zlatzm.f DEPRECATED/ztzrqf.f) | |||
| message(STATUS "Building deprecated routines") | |||
| set(DSLASRC spotrs.f) | |||
| set(ZCLASRC cpotrs.f) | |||
| if (BUILD_COMPLEX) | |||
| list(APPEND LA_REL_SRC ${CLASRC} ${ZCLASRC} ${SCLAUX}) | |||
| endif () | |||
| set(SCATGEN slatm1.f slaran.f slarnd.f) | |||
| if (BUILD_COMPLEX16) | |||
| list(APPEND LA_REL_SRC ${ZLASRC} ${ZCLASRC} ${DZLAUX}) | |||
| endif () | |||
| set(SMATGEN slatms.f slatme.f slatmr.f slatmt.f | |||
| slagge.f slagsy.f slakf2.f slarge.f slaror.f slarot.f slatm2.f | |||
| slatm3.f slatm5.f slatm6.f slatm7.f slahilb.f) | |||
| set(CMATGEN clatms.f clatme.f clatmr.f clatmt.f | |||
| clagge.f claghe.f clagsy.f clakf2.f clarge.f claror.f clarot.f | |||
| clatm1.f clarnd.f clatm2.f clatm3.f clatm5.f clatm6.f clahilb.f slatm7.f) | |||
| set(DZATGEN dlatm1.f dlaran.f dlarnd.f) | |||
| set(DMATGEN dlatms.f dlatme.f dlatmr.f dlatmt.f | |||
| dlagge.f dlagsy.f dlakf2.f dlarge.f dlaror.f dlarot.f dlatm2.f | |||
| dlatm3.f dlatm5.f dlatm6.f dlatm7.f dlahilb.f) | |||
| set(ZMATGEN zlatms.f zlatme.f zlatmr.f zlatmt.f | |||
| zlagge.f zlaghe.f zlagsy.f zlakf2.f zlarge.f zlaror.f zlarot.f | |||
| zlatm1.f zlarnd.f zlatm2.f zlatm3.f zlatm5.f zlatm6.f zlahilb.f dlatm7.f) | |||
| if(BUILD_SINGLE) | |||
| set(LA_REL_SRC ${SLASRC} ${DSLASRC} ${ALLAUX} ${SCLAUX}) | |||
| set(LA_GEN_SRC ${SMATGEN} ${SCATGEN}) | |||
| message(STATUS "Building Single Precision") | |||
| endif() | |||
| if(BUILD_DOUBLE) | |||
| set(LA_REL_SRC ${LA_REL_SRC} ${DLASRC} ${DSLASRC} ${ALLAUX} ${DZLAUX}) | |||
| set(LA_GEN_SRC ${LA_GEN_SRC} ${DMATGEN} ${DZATGEN}) | |||
| message(STATUS "Building Double Precision") | |||
| endif() | |||
| if(BUILD_COMPLEX) | |||
| set(LA_REL_SRC ${LA_REL_SRC} ${CLASRC} ${ZCLASRC} ${ALLAUX} ${SCLAUX}) | |||
| SET(LA_GEN_SRC ${LA_GEN_SRC} ${CMATGEN} ${SCATGEN}) | |||
| message(STATUS "Building Complex Precision") | |||
| endif() | |||
| if(BUILD_COMPLEX16) | |||
| set(LA_REL_SRC ${LA_REL_SRC} ${ZLASRC} ${ZCLASRC} ${ALLAUX} ${DZLAUX}) | |||
| SET(LA_GEN_SRC ${LA_GEN_SRC} ${ZMATGEN} ${DZATGEN}) | |||
| message(STATUS "Building Double Complex Precision") | |||
| endif() | |||
| # add lapack-netlib folder to the sources | |||
| set(LA_SOURCES "") | |||
| foreach (LA_FILE ${LA_REL_SRC}) | |||
| list(APPEND LA_SOURCES "${NETLIB_LAPACK_DIR}/SRC/${LA_FILE}") | |||
| endforeach () | |||
| foreach (LA_FILE ${LA_GEN_SRC}) | |||
| list(APPEND LA_SOURCES "${NETLIB_LAPACK_DIR}/TESTING/MATGEN/${LA_FILE}") | |||
| endforeach () | |||
| set_source_files_properties(${LA_SOURCES} PROPERTIES COMPILE_FLAGS "${LAPACK_FFLAGS}") | |||
| @@ -1,5 +1,5 @@ | |||
| set(C_SRC | |||
| set(CSRC | |||
| lapacke_cbbcsd.c | |||
| lapacke_cbbcsd_work.c | |||
| lapacke_cbdsqr.c | |||
| @@ -46,6 +46,8 @@ set(C_SRC | |||
| lapacke_cgehrd_work.c | |||
| lapacke_cgejsv.c | |||
| lapacke_cgejsv_work.c | |||
| lapacke_cgelq.c | |||
| lapacke_cgelq_work.c | |||
| lapacke_cgelq2.c | |||
| lapacke_cgelq2_work.c | |||
| lapacke_cgelqf.c | |||
| @@ -60,12 +62,18 @@ set(C_SRC | |||
| lapacke_cgelsy_work.c | |||
| lapacke_cgemqr.c | |||
| lapacke_cgemqr_work.c | |||
| lapacke_cgemlq.c | |||
| lapacke_cgemlq_work.c | |||
| lapacke_cgemqrt.c | |||
| lapacke_cgemqrt_work.c | |||
| lapacke_cgeqlf.c | |||
| lapacke_cgeqlf_work.c | |||
| lapacke_cgeqp3.c | |||
| lapacke_cgeqp3_work.c | |||
| lapacke_cgeqpf.c | |||
| lapacke_cgeqpf_work.c | |||
| lapacke_cgeqr.c | |||
| lapacke_cgeqr_work.c | |||
| lapacke_cgeqr2.c | |||
| lapacke_cgeqr2_work.c | |||
| lapacke_cgeqrf.c | |||
| @@ -134,8 +142,12 @@ set(C_SRC | |||
| lapacke_cggqrf_work.c | |||
| lapacke_cggrqf.c | |||
| lapacke_cggrqf_work.c | |||
| lapacke_cggsvd.c | |||
| lapacke_cggsvd_work.c | |||
| lapacke_cggsvd3.c | |||
| lapacke_cggsvd3_work.c | |||
| lapacke_cggsvp.c | |||
| lapacke_cggsvp_work.c | |||
| lapacke_cggsvp3.c | |||
| lapacke_cggsvp3_work.c | |||
| lapacke_cgtcon.c | |||
| @@ -210,6 +222,8 @@ set(C_SRC | |||
| lapacke_chesv_work.c | |||
| lapacke_chesv_aa.c | |||
| lapacke_chesv_aa_work.c | |||
| lapacke_chesv_aa_2stage.c | |||
| lapacke_chesv_aa_2stage_work.c | |||
| lapacke_chesv_rk.c | |||
| lapacke_chesv_rk_work.c | |||
| lapacke_chesvx.c | |||
| @@ -224,6 +238,8 @@ set(C_SRC | |||
| lapacke_chetrf_rook_work.c | |||
| lapacke_chetrf_aa.c | |||
| lapacke_chetrf_aa_work.c | |||
| lapacke_chetrf_aa_2stage.c | |||
| lapacke_chetrf_aa_2stage_work.c | |||
| lapacke_chetrf_rk.c | |||
| lapacke_chetrf_rk_work.c | |||
| lapacke_chetri.c | |||
| @@ -242,6 +258,9 @@ set(C_SRC | |||
| lapacke_chetrs_rook_work.c | |||
| lapacke_chetrs_aa.c | |||
| lapacke_chetrs_aa_work.c | |||
| lapacke_chetrs_aa_2stage.c | |||
| lapacke_chetrs_aa_2stage_work.c | |||
| lapacke_chetrf_rk.c | |||
| lapacke_chetrs_3.c | |||
| lapacke_chetrs_3_work.c | |||
| lapacke_chfrk.c | |||
| @@ -290,6 +309,11 @@ set(C_SRC | |||
| lapacke_clacp2_work.c | |||
| lapacke_clacpy.c | |||
| lapacke_clacpy_work.c | |||
| lapacke_clacrm.c | |||
| lapacke_clacrm_work.c | |||
| lapacke_clarcm.c | |||
| lapacke_clarcm_work.c | |||
| lapacke_clacn2.c | |||
| lapacke_clag2z.c | |||
| lapacke_clag2z_work.c | |||
| lapacke_clange.c | |||
| @@ -318,6 +342,8 @@ set(C_SRC | |||
| lapacke_clascl_work.c | |||
| lapacke_claset.c | |||
| lapacke_claset_work.c | |||
| lapacke_classq.c | |||
| lapacke_classq_work.c | |||
| lapacke_claswp.c | |||
| lapacke_claswp_work.c | |||
| lapacke_clauum.c | |||
| @@ -436,6 +462,8 @@ set(C_SRC | |||
| lapacke_csysv_work.c | |||
| lapacke_csysv_aa.c | |||
| lapacke_csysv_aa_work.c | |||
| lapacke_csysv_aa_2stage.c | |||
| lapacke_csysv_aa_2stage_work.c | |||
| lapacke_csysv_rk.c | |||
| lapacke_csysv_rk_work.c | |||
| lapacke_csysvx.c | |||
| @@ -448,6 +476,8 @@ set(C_SRC | |||
| lapacke_csytrf_rook_work.c | |||
| lapacke_csytrf_aa.c | |||
| lapacke_csytrf_aa_work.c | |||
| lapacke_csytrf_aa_2stage.c | |||
| lapacke_csytrf_aa_2stage_work.c | |||
| lapacke_csytrf_rk.c | |||
| lapacke_csytrf_rk_work.c | |||
| lapacke_csytri.c | |||
| @@ -466,6 +496,8 @@ set(C_SRC | |||
| lapacke_csytrs_rook_work.c | |||
| lapacke_csytrs_aa.c | |||
| lapacke_csytrs_aa_work.c | |||
| lapacke_csytrs_aa_2stage.c | |||
| lapacke_csytrs_aa_2stage_work.c | |||
| lapacke_csytrs_3.c | |||
| lapacke_csytrs_3_work.c | |||
| lapacke_ctbcon.c | |||
| @@ -633,6 +665,8 @@ set(DSRC | |||
| lapacke_dgehrd_work.c | |||
| lapacke_dgejsv.c | |||
| lapacke_dgejsv_work.c | |||
| lapacke_dgelq.c | |||
| lapacke_dgelq_work.c | |||
| lapacke_dgelq2.c | |||
| lapacke_dgelq2_work.c | |||
| lapacke_dgelqf.c | |||
| @@ -645,6 +679,8 @@ set(DSRC | |||
| lapacke_dgelss_work.c | |||
| lapacke_dgelsy.c | |||
| lapacke_dgelsy_work.c | |||
| lapacke_dgemlq.c | |||
| lapacke_dgemlq_work.c | |||
| lapacke_dgemqr.c | |||
| lapacke_dgemqr_work.c | |||
| lapacke_dgemqrt.c | |||
| @@ -653,6 +689,10 @@ set(DSRC | |||
| lapacke_dgeqlf_work.c | |||
| lapacke_dgeqp3.c | |||
| lapacke_dgeqp3_work.c | |||
| lapacke_dgeqpf.c | |||
| lapacke_dgeqpf_work.c | |||
| lapacke_dgeqr.c | |||
| lapacke_dgeqr_work.c | |||
| lapacke_dgeqr2.c | |||
| lapacke_dgeqr2_work.c | |||
| lapacke_dgeqrf.c | |||
| @@ -721,8 +761,12 @@ set(DSRC | |||
| lapacke_dggqrf_work.c | |||
| lapacke_dggrqf.c | |||
| lapacke_dggrqf_work.c | |||
| lapacke_dggsvd.c | |||
| lapacke_dggsvd_work.c | |||
| lapacke_dggsvd3.c | |||
| lapacke_dggsvd3_work.c | |||
| lapacke_dggsvp.c | |||
| lapacke_dggsvp_work.c | |||
| lapacke_dggsvp3.c | |||
| lapacke_dggsvp3_work.c | |||
| lapacke_dgtcon.c | |||
| @@ -785,6 +829,9 @@ set(DSRC | |||
| lapacke_dlaset_work.c | |||
| lapacke_dlasrt.c | |||
| lapacke_dlasrt_work.c | |||
| lapacke_dlassq.c | |||
| lapacke_dlassq_work.c | |||
| lapacke_dlaswp.c | |||
| lapacke_dlaswp.c | |||
| lapacke_dlaswp_work.c | |||
| lapacke_dlauum.c | |||
| @@ -1025,6 +1072,8 @@ set(DSRC | |||
| lapacke_dsysv_work.c | |||
| lapacke_dsysv_aa.c | |||
| lapacke_dsysv_aa_work.c | |||
| lapacke_dsysv_aa_2stage.c | |||
| lapacke_dsysv_aa_2stage_work.c | |||
| lapacke_dsysv_rk.c | |||
| lapacke_dsysv_rk_work.c | |||
| lapacke_dsysvx.c | |||
| @@ -1039,6 +1088,8 @@ set(DSRC | |||
| lapacke_dsytrf_rook_work.c | |||
| lapacke_dsytrf_aa.c | |||
| lapacke_dsytrf_aa_work.c | |||
| lapacke_dsytrf_aa_2stage.c | |||
| lapacke_dsytrf_aa_2stage_work.c | |||
| lapacke_dsytrf_rk.c | |||
| lapacke_dsytrf_rk_work.c | |||
| lapacke_dsytri.c | |||
| @@ -1055,6 +1106,8 @@ set(DSRC | |||
| lapacke_dsytrs2_work.c | |||
| lapacke_dsytrs_aa.c | |||
| lapacke_dsytrs_aa_work.c | |||
| lapacke_dsytrs_aa_2stage.c | |||
| lapacke_dsytrs_aa_2stage_work.c | |||
| lapacke_dsytrs_3.c | |||
| lapacke_dsytrs_3_work.c | |||
| lapacke_dsytrs_work.c | |||
| @@ -1184,6 +1237,8 @@ set(SSRC | |||
| lapacke_sgehrd_work.c | |||
| lapacke_sgejsv.c | |||
| lapacke_sgejsv_work.c | |||
| lapacke_sgelq.c | |||
| lapacke_sgelq_work.c | |||
| lapacke_sgelq2.c | |||
| lapacke_sgelq2_work.c | |||
| lapacke_sgelqf.c | |||
| @@ -1196,6 +1251,8 @@ set(SSRC | |||
| lapacke_sgelss_work.c | |||
| lapacke_sgelsy.c | |||
| lapacke_sgelsy_work.c | |||
| lapacke_sgemlq.c | |||
| lapacke_sgemlq_work.c | |||
| lapacke_sgemqr.c | |||
| lapacke_sgemqr_work.c | |||
| lapacke_sgemqrt.c | |||
| @@ -1204,6 +1261,10 @@ set(SSRC | |||
| lapacke_sgeqlf_work.c | |||
| lapacke_sgeqp3.c | |||
| lapacke_sgeqp3_work.c | |||
| lapacke_sgeqpf.c | |||
| lapacke_sgeqpf_work.c | |||
| lapacke_sgeqr.c | |||
| lapacke_sgeqr_work.c | |||
| lapacke_sgeqr2.c | |||
| lapacke_sgeqr2_work.c | |||
| lapacke_sgeqrf.c | |||
| @@ -1272,8 +1333,12 @@ set(SSRC | |||
| lapacke_sggqrf_work.c | |||
| lapacke_sggrqf.c | |||
| lapacke_sggrqf_work.c | |||
| lapacke_sggsvd.c | |||
| lapacke_sggsvd_work.c | |||
| lapacke_sggsvd3.c | |||
| lapacke_sggsvd3_work.c | |||
| lapacke_sggsvp.c | |||
| lapacke_sggsvp_work.c | |||
| lapacke_sggsvp3.c | |||
| lapacke_sggsvp3_work.c | |||
| lapacke_sgtcon.c | |||
| @@ -1336,6 +1401,8 @@ set(SSRC | |||
| lapacke_slaset_work.c | |||
| lapacke_slasrt.c | |||
| lapacke_slasrt_work.c | |||
| lapacke_slassq.c | |||
| lapacke_slassq_work.c | |||
| lapacke_slaswp.c | |||
| lapacke_slaswp_work.c | |||
| lapacke_slauum.c | |||
| @@ -1572,6 +1639,8 @@ set(SSRC | |||
| lapacke_ssysv_work.c | |||
| lapacke_ssysv_aa.c | |||
| lapacke_ssysv_aa_work.c | |||
| lapacke_ssysv_aa_2stage.c | |||
| lapacke_ssysv_aa_2stage_work.c | |||
| lapacke_ssysv_rk.c | |||
| lapacke_ssysv_rk_work.c | |||
| lapacke_ssysvx.c | |||
| @@ -1586,6 +1655,9 @@ set(SSRC | |||
| lapacke_ssytrf_rook_work.c | |||
| lapacke_ssytrf_aa.c | |||
| lapacke_ssytrf_aa_work.c | |||
| lapacke_ssytrf_aa_2stage.c | |||
| lapacke_ssytrf_aa_2stage_work.c | |||
| lapacke_ssytrf_rook.c | |||
| lapacke_ssytrf_rk.c | |||
| lapacke_ssytrf_rk_work.c | |||
| lapacke_ssytri.c | |||
| @@ -1602,6 +1674,8 @@ set(SSRC | |||
| lapacke_ssytrs2_work.c | |||
| lapacke_ssytrs_aa.c | |||
| lapacke_ssytrs_aa_work.c | |||
| lapacke_ssytrs_aa_2stage.c | |||
| lapacke_ssytrs_aa_2stage_work.c | |||
| lapacke_ssytrs_3.c | |||
| lapacke_ssytrs_3_work.c | |||
| lapacke_ssytrs_work.c | |||
| @@ -1729,6 +1803,8 @@ set(ZSRC | |||
| lapacke_zgehrd_work.c | |||
| lapacke_zgejsv.c | |||
| lapacke_zgejsv_work.c | |||
| lapacke_zgelq.c | |||
| lapacke_zgelq_work.c | |||
| lapacke_zgelq2.c | |||
| lapacke_zgelq2_work.c | |||
| lapacke_zgelqf.c | |||
| @@ -1741,6 +1817,8 @@ set(ZSRC | |||
| lapacke_zgelss_work.c | |||
| lapacke_zgelsy.c | |||
| lapacke_zgelsy_work.c | |||
| lapacke_zgemlq.c | |||
| lapacke_zgemlq_work.c | |||
| lapacke_zgemqr.c | |||
| lapacke_zgemqr_work.c | |||
| lapacke_zgemqrt.c | |||
| @@ -1749,6 +1827,10 @@ set(ZSRC | |||
| lapacke_zgeqlf_work.c | |||
| lapacke_zgeqp3.c | |||
| lapacke_zgeqp3_work.c | |||
| lapacke_zgeqpf.c | |||
| lapacke_zgeqpf_work.c | |||
| lapacke_zgeqr.c | |||
| lapacke_zgeqr_work.c | |||
| lapacke_zgeqr2.c | |||
| lapacke_zgeqr2_work.c | |||
| lapacke_zgeqrf.c | |||
| @@ -1817,8 +1899,12 @@ set(ZSRC | |||
| lapacke_zggqrf_work.c | |||
| lapacke_zggrqf.c | |||
| lapacke_zggrqf_work.c | |||
| lapacke_zggsvd.c | |||
| lapacke_zggsvd_work.c | |||
| lapacke_zggsvd3.c | |||
| lapacke_zggsvd3_work.c | |||
| lapacke_zggsvp.c | |||
| lapacke_zggsvp_work.c | |||
| lapacke_zggsvp3.c | |||
| lapacke_zggsvp3_work.c | |||
| lapacke_zgtcon.c | |||
| @@ -1839,6 +1925,12 @@ set(ZSRC | |||
| lapacke_zhbevd_work.c | |||
| lapacke_zhbevx.c | |||
| lapacke_zhbevx_work.c | |||
| lapacke_zhbev_2stage.c | |||
| lapacke_zhbev_2stage_work.c | |||
| lapacke_zhbevd_2stage.c | |||
| lapacke_zhbevd_2stage_work.c | |||
| lapacke_zhbevx_2stage.c | |||
| lapacke_zhbevx_2stage_work.c | |||
| lapacke_zhbgst.c | |||
| lapacke_zhbgst_work.c | |||
| lapacke_zhbgv.c | |||
| @@ -1887,6 +1979,8 @@ set(ZSRC | |||
| lapacke_zhesv_work.c | |||
| lapacke_zhesv_aa.c | |||
| lapacke_zhesv_aa_work.c | |||
| lapacke_zhesv_aa_2stage.c | |||
| lapacke_zhesv_aa_2stage_work.c | |||
| lapacke_zhesv_rk.c | |||
| lapacke_zhesv_rk_work.c | |||
| lapacke_zhesvx.c | |||
| @@ -1901,6 +1995,8 @@ set(ZSRC | |||
| lapacke_zhetrf_rook_work.c | |||
| lapacke_zhetrf_aa.c | |||
| lapacke_zhetrf_aa_work.c | |||
| lapacke_zhetrf_aa_2stage.c | |||
| lapacke_zhetrf_aa_2stage_work.c | |||
| lapacke_zhetrf_rk.c | |||
| lapacke_zhetrf_rk_work.c | |||
| lapacke_zhetri.c | |||
| @@ -1918,6 +2014,8 @@ set(ZSRC | |||
| lapacke_zhetrs_work.c | |||
| lapacke_zhetrs_aa.c | |||
| lapacke_zhetrs_aa_work.c | |||
| lapacke_zhetrs_aa_2stage.c | |||
| lapacke_zhetrs_aa_2stage_work.c | |||
| lapacke_zhetrs_3.c | |||
| lapacke_zhetrs_3_work.c | |||
| lapacke_zhetrs_rook_work.c | |||
| @@ -1967,6 +2065,8 @@ set(ZSRC | |||
| lapacke_zlacp2_work.c | |||
| lapacke_zlacpy.c | |||
| lapacke_zlacpy_work.c | |||
| lapacke_zlacrm.c | |||
| lapacke_zlacrm_work.c | |||
| lapacke_zlag2c.c | |||
| lapacke_zlag2c_work.c | |||
| lapacke_zlange.c | |||
| @@ -1981,6 +2081,8 @@ set(ZSRC | |||
| lapacke_zlapmr_work.c | |||
| lapacke_zlapmt.c | |||
| lapacke_zlapmt_work.c | |||
| lapacke_zlarcm.c | |||
| lapacke_zlarcm_work.c | |||
| lapacke_zlarfb.c | |||
| lapacke_zlarfb_work.c | |||
| lapacke_zlarfg.c | |||
| @@ -1995,6 +2097,8 @@ set(ZSRC | |||
| lapacke_zlascl_work.c | |||
| lapacke_zlaset.c | |||
| lapacke_zlaset_work.c | |||
| lapacke_zlassq.c | |||
| lapacke_zlassq_work.c | |||
| lapacke_zlaswp.c | |||
| lapacke_zlaswp_work.c | |||
| lapacke_zlauum.c | |||
| @@ -2113,6 +2217,8 @@ set(ZSRC | |||
| lapacke_zsysv_work.c | |||
| lapacke_zsysv_aa.c | |||
| lapacke_zsysv_aa_work.c | |||
| lapacke_zsysv_aa_2stage.c | |||
| lapacke_zsysv_aa_2stage_work.c | |||
| lapacke_zsysv_rk.c | |||
| lapacke_zsysv_rk_work.c | |||
| lapacke_zsysvx.c | |||
| @@ -2125,6 +2231,8 @@ set(ZSRC | |||
| lapacke_zsytrf_rook_work.c | |||
| lapacke_zsytrf_aa.c | |||
| lapacke_zsytrf_aa_work.c | |||
| lapacke_zsytrf_aa_2stage.c | |||
| lapacke_zsytrf_aa_2stage_work.c | |||
| lapacke_zsytrf_rk.c | |||
| lapacke_zsytrf_rk_work.c | |||
| lapacke_zsytri.c | |||
| @@ -2143,6 +2251,8 @@ set(ZSRC | |||
| lapacke_zsytrs_rook_work.c | |||
| lapacke_zsytrs_aa.c | |||
| lapacke_zsytrs_aa_work.c | |||
| lapacke_zsytrs_aa_2stage.c | |||
| lapacke_zsytrs_aa_2stage_work.c | |||
| lapacke_zsytrs_3.c | |||
| lapacke_zsytrs_3_work.c | |||
| lapacke_ztbcon.c | |||
| @@ -2263,104 +2373,92 @@ set(ZSRC | |||
| ) | |||
| set(SRCX | |||
| lapacke_cgbrfsx.c lapacke_cporfsx.c lapacke_dgerfsx.c lapacke_sgbrfsx.c lapacke_ssyrfsx.c lapacke_zherfsx.c | |||
| lapacke_cgbrfsx_work.c lapacke_cporfsx_work.c lapacke_dgerfsx_work.c lapacke_sgbrfsx_work.c lapacke_ssyrfsx_work.c lapacke_zherfsx_work.c | |||
| lapacke_cgerfsx.c lapacke_csyrfsx.c lapacke_dporfsx.c lapacke_sgerfsx.c lapacke_zgbrfsx.c lapacke_zporfsx.c | |||
| lapacke_cgerfsx_work.c lapacke_csyrfsx_work.c lapacke_dporfsx_work.c lapacke_sgerfsx_work.c lapacke_zgbrfsx_work.c lapacke_zporfsx_work.c | |||
| lapacke_cherfsx.c lapacke_dgbrfsx.c lapacke_dsyrfsx.c lapacke_sporfsx.c lapacke_zgerfsx.c lapacke_zsyrfsx.c | |||
| lapacke_cherfsx_work.c lapacke_dgbrfsx_work.c lapacke_dsyrfsx_work.c lapacke_sporfsx_work.c lapacke_zgerfsx_work.c lapacke_zsyrfsx_work.c | |||
| lapacke_cgbsvxx.c lapacke_cposvxx.c lapacke_dgesvxx.c lapacke_sgbsvxx.c lapacke_ssysvxx.c lapacke_zhesvxx.c | |||
| lapacke_cgbsvxx_work.c lapacke_cposvxx_work.c lapacke_dgesvxx_work.c lapacke_sgbsvxx_work.c lapacke_ssysvxx_work.c lapacke_zhesvxx_work.c | |||
| lapacke_cgesvxx.c lapacke_csysvxx.c lapacke_dposvxx.c lapacke_sgesvxx.c lapacke_zgbsvxx.c lapacke_zposvxx.c | |||
| lapacke_cgesvxx_work.c lapacke_csysvxx_work.c lapacke_dposvxx_work.c lapacke_sgesvxx_work.c lapacke_zgbsvxx_work.c lapacke_zposvxx_work.c | |||
| lapacke_chesvxx.c lapacke_dgbsvxx.c lapacke_dsysvxx.c lapacke_sposvxx.c lapacke_zgesvxx.c lapacke_zsysvxx.c | |||
| lapacke_cgbrfsx.c lapacke_cporfsx.c lapacke_dgerfsx.c lapacke_sgbrfsx.c lapacke_ssyrfsx.c lapacke_zherfsx.c | |||
| lapacke_cgbrfsx_work.c lapacke_cporfsx_work.c lapacke_dgerfsx_work.c lapacke_sgbrfsx_work.c lapacke_ssyrfsx_work.c lapacke_zherfsx_work.c | |||
| lapacke_cgerfsx.c lapacke_csyrfsx.c lapacke_dporfsx.c lapacke_sgerfsx.c lapacke_zgbrfsx.c lapacke_zporfsx.c | |||
| lapacke_cgerfsx_work.c lapacke_csyrfsx_work.c lapacke_dporfsx_work.c lapacke_sgerfsx_work.c lapacke_zgbrfsx_work.c lapacke_zporfsx_work.c | |||
| lapacke_cherfsx.c lapacke_dgbrfsx.c lapacke_dsyrfsx.c lapacke_sporfsx.c lapacke_zgerfsx.c lapacke_zsyrfsx.c | |||
| lapacke_cherfsx_work.c lapacke_dgbrfsx_work.c lapacke_dsyrfsx_work.c lapacke_sporfsx_work.c lapacke_zgerfsx_work.c lapacke_zsyrfsx_work.c | |||
| lapacke_cgbsvxx.c lapacke_cposvxx.c lapacke_dgesvxx.c lapacke_sgbsvxx.c lapacke_ssysvxx.c lapacke_zhesvxx.c | |||
| lapacke_cgbsvxx_work.c lapacke_cposvxx_work.c lapacke_dgesvxx_work.c lapacke_sgbsvxx_work.c lapacke_ssysvxx_work.c lapacke_zhesvxx_work.c | |||
| lapacke_cgesvxx.c lapacke_csysvxx.c lapacke_dposvxx.c lapacke_sgesvxx.c lapacke_zgbsvxx.c lapacke_zposvxx.c | |||
| lapacke_cgesvxx_work.c lapacke_csysvxx_work.c lapacke_dposvxx_work.c lapacke_sgesvxx_work.c lapacke_zgbsvxx_work.c lapacke_zposvxx_work.c | |||
| lapacke_chesvxx.c lapacke_dgbsvxx.c lapacke_dsysvxx.c lapacke_sposvxx.c lapacke_zgesvxx.c lapacke_zsysvxx.c | |||
| lapacke_chesvxx_work.c lapacke_dgbsvxx_work.c lapacke_dsysvxx_work.c lapacke_sposvxx_work.c lapacke_zgesvxx_work.c lapacke_zsysvxx_work.c | |||
| ) | |||
| # FILE PARTS OF TMGLIB | |||
| # FILE PARTS OF TMGLIB | |||
| set(MATGEN | |||
| lapacke_clatms.c | |||
| lapacke_clatms_work.c | |||
| lapacke_dlatms.c | |||
| lapacke_dlatms_work.c | |||
| lapacke_slatms.c | |||
| lapacke_slatms_work.c | |||
| lapacke_zlatms.c | |||
| lapacke_zlatms_work.c | |||
| lapacke_clagge.c | |||
| lapacke_clagge_work.c | |||
| lapacke_dlagge.c | |||
| lapacke_dlagge_work.c | |||
| lapacke_slagge.c | |||
| lapacke_slagge_work.c | |||
| lapacke_zlagge.c | |||
| lapacke_zlagge_work.c | |||
| lapacke_claghe.c | |||
| lapacke_claghe_work.c | |||
| lapacke_zlaghe.c | |||
| lapacke_zlaghe_work.c | |||
| lapacke_clagsy.c | |||
| lapacke_clagsy_work.c | |||
| lapacke_dlagsy.c | |||
| lapacke_dlagsy_work.c | |||
| lapacke_slagsy.c | |||
| lapacke_slagsy_work.c | |||
| lapacke_zlagsy.c | |||
| lapacke_clatms.c | |||
| lapacke_clatms_work.c | |||
| lapacke_dlatms.c | |||
| lapacke_dlatms_work.c | |||
| lapacke_slatms.c | |||
| lapacke_slatms_work.c | |||
| lapacke_zlatms.c | |||
| lapacke_zlatms_work.c | |||
| lapacke_clagge.c | |||
| lapacke_clagge_work.c | |||
| lapacke_dlagge.c | |||
| lapacke_dlagge_work.c | |||
| lapacke_slagge.c | |||
| lapacke_slagge_work.c | |||
| lapacke_zlagge.c | |||
| lapacke_zlagge_work.c | |||
| lapacke_claghe.c | |||
| lapacke_claghe_work.c | |||
| lapacke_zlaghe.c | |||
| lapacke_zlaghe_work.c | |||
| lapacke_clagsy.c | |||
| lapacke_clagsy_work.c | |||
| lapacke_dlagsy.c | |||
| lapacke_dlagsy_work.c | |||
| lapacke_slagsy.c | |||
| lapacke_slagsy_work.c | |||
| lapacke_zlagsy.c | |||
| lapacke_zlagsy_work.c | |||
| lapacke_nancheck.c | |||
| ) | |||
| set(Utils_SRC | |||
| lapacke_cgb_nancheck.c lapacke_dpf_nancheck.c lapacke_ssy_trans.c | |||
| lapacke_cgb_trans.c lapacke_dpf_trans.c lapacke_stb_nancheck.c | |||
| lapacke_cge_nancheck.c lapacke_dpo_nancheck.c lapacke_stb_trans.c | |||
| lapacke_cge_trans.c lapacke_dpo_trans.c lapacke_stf_nancheck.c | |||
| lapacke_cgg_nancheck.c lapacke_dpp_nancheck.c lapacke_stf_trans.c | |||
| lapacke_cgg_trans.c lapacke_dpp_trans.c lapacke_stp_nancheck.c | |||
| lapacke_cgt_nancheck.c lapacke_dpt_nancheck.c lapacke_stp_trans.c | |||
| lapacke_chb_nancheck.c lapacke_dsb_nancheck.c lapacke_str_nancheck.c | |||
| lapacke_chb_trans.c lapacke_dsb_trans.c lapacke_str_trans.c | |||
| lapacke_che_nancheck.c lapacke_dsp_nancheck.c lapacke_xerbla.c | |||
| lapacke_che_trans.c lapacke_dsp_trans.c lapacke_zgb_nancheck.c | |||
| lapacke_chp_nancheck.c lapacke_dst_nancheck.c lapacke_zgb_trans.c | |||
| lapacke_chp_trans.c lapacke_dsy_nancheck.c lapacke_zge_nancheck.c | |||
| lapacke_chs_nancheck.c lapacke_dsy_trans.c lapacke_zge_trans.c | |||
| lapacke_chs_trans.c lapacke_dtb_nancheck.c lapacke_zgg_nancheck.c | |||
| lapacke_c_nancheck.c lapacke_dtb_trans.c lapacke_zgg_trans.c | |||
| lapacke_cpb_nancheck.c lapacke_dtf_nancheck.c lapacke_zgt_nancheck.c | |||
| lapacke_cpb_trans.c lapacke_dtf_trans.c lapacke_zhb_nancheck.c | |||
| lapacke_cpf_nancheck.c lapacke_dtp_nancheck.c lapacke_zhb_trans.c | |||
| lapacke_cpf_trans.c lapacke_dtp_trans.c lapacke_zhe_nancheck.c | |||
| lapacke_cpo_nancheck.c lapacke_dtr_nancheck.c lapacke_zhe_trans.c | |||
| lapacke_cpo_trans.c lapacke_dtr_trans.c lapacke_zhp_nancheck.c | |||
| lapacke_cpp_nancheck.c lapacke_lsame.c lapacke_zhp_trans.c | |||
| lapacke_cpp_trans.c lapacke_make_complex_double.c lapacke_zhs_nancheck.c | |||
| lapacke_cpt_nancheck.c lapacke_make_complex_float.c lapacke_zhs_trans.c | |||
| lapacke_csp_nancheck.c lapacke_sgb_nancheck.c lapacke_z_nancheck.c | |||
| lapacke_csp_trans.c lapacke_sgb_trans.c lapacke_zpb_nancheck.c | |||
| lapacke_cst_nancheck.c lapacke_sge_nancheck.c lapacke_zpb_trans.c | |||
| lapacke_csy_nancheck.c lapacke_sge_trans.c lapacke_zpf_nancheck.c | |||
| lapacke_csy_trans.c lapacke_sgg_nancheck.c lapacke_zpf_trans.c | |||
| lapacke_ctb_nancheck.c lapacke_sgg_trans.c lapacke_zpo_nancheck.c | |||
| lapacke_ctb_trans.c lapacke_sgt_nancheck.c lapacke_zpo_trans.c | |||
| lapacke_ctf_nancheck.c lapacke_shs_nancheck.c lapacke_zpp_nancheck.c | |||
| lapacke_ctf_trans.c lapacke_shs_trans.c lapacke_zpp_trans.c | |||
| lapacke_ctp_nancheck.c lapacke_s_nancheck.c lapacke_zpt_nancheck.c | |||
| lapacke_ctp_trans.c lapacke_spb_nancheck.c lapacke_zsp_nancheck.c | |||
| lapacke_ctr_nancheck.c lapacke_spb_trans.c lapacke_zsp_trans.c | |||
| lapacke_ctr_trans.c lapacke_spf_nancheck.c lapacke_zst_nancheck.c | |||
| lapacke_dgb_nancheck.c lapacke_spf_trans.c lapacke_zsy_nancheck.c | |||
| lapacke_dgb_trans.c lapacke_spo_nancheck.c lapacke_zsy_trans.c | |||
| lapacke_dge_nancheck.c lapacke_spo_trans.c lapacke_ztb_nancheck.c | |||
| lapacke_dge_trans.c lapacke_spp_nancheck.c lapacke_ztb_trans.c | |||
| lapacke_dgg_nancheck.c lapacke_spp_trans.c lapacke_ztf_nancheck.c | |||
| lapacke_dgg_trans.c lapacke_spt_nancheck.c lapacke_ztf_trans.c | |||
| lapacke_dgt_nancheck.c lapacke_ssb_nancheck.c lapacke_ztp_nancheck.c | |||
| lapacke_dhs_nancheck.c lapacke_ssb_trans.c lapacke_ztp_trans.c | |||
| lapacke_dhs_trans.c lapacke_ssp_nancheck.c lapacke_ztr_nancheck.c | |||
| lapacke_d_nancheck.c lapacke_ssp_trans.c lapacke_ztr_trans.c | |||
| lapacke_dpb_nancheck.c lapacke_sst_nancheck.c | |||
| lapacke_dpb_trans.c lapacke_ssy_nancheck.c | |||
| lapacke_c_nancheck.c lapacke_ctr_trans.c lapacke_make_complex_float.c lapacke_zgb_nancheck.c | |||
| lapacke_cgb_nancheck.c lapacke_d_nancheck.c lapacke_s_nancheck.c lapacke_zgb_trans.c | |||
| lapacke_cgb_trans.c lapacke_dgb_nancheck.c lapacke_sgb_nancheck.c lapacke_zge_nancheck.c | |||
| lapacke_cge_nancheck.c lapacke_dgb_trans.c lapacke_sgb_trans.c lapacke_zge_trans.c | |||
| lapacke_cge_trans.c lapacke_dge_nancheck.c lapacke_sge_nancheck.c lapacke_zgg_nancheck.c | |||
| lapacke_cgg_nancheck.c lapacke_dge_trans.c lapacke_sge_trans.c lapacke_zgg_trans.c | |||
| lapacke_cgg_trans.c lapacke_dgg_nancheck.c lapacke_sgg_nancheck.c lapacke_zgt_nancheck.c | |||
| lapacke_cgt_nancheck.c lapacke_dgg_trans.c lapacke_sgg_trans.c lapacke_zhb_nancheck.c | |||
| lapacke_chb_nancheck.c lapacke_dgt_nancheck.c lapacke_sgt_nancheck.c lapacke_zhb_trans.c | |||
| lapacke_chb_trans.c lapacke_dhs_nancheck.c lapacke_shs_nancheck.c lapacke_zhe_nancheck.c | |||
| lapacke_che_nancheck.c lapacke_dhs_trans.c lapacke_shs_trans.c lapacke_zhe_trans.c | |||
| lapacke_che_trans.c lapacke_dpb_nancheck.c lapacke_spb_nancheck.c lapacke_zhp_nancheck.c | |||
| lapacke_chp_nancheck.c lapacke_dpb_trans.c lapacke_spb_trans.c lapacke_zhp_trans.c | |||
| lapacke_chp_trans.c lapacke_dpf_nancheck.c lapacke_spf_nancheck.c lapacke_zhs_nancheck.c | |||
| lapacke_chs_nancheck.c lapacke_dpf_trans.c lapacke_spf_trans.c lapacke_zhs_trans.c | |||
| lapacke_chs_trans.c lapacke_dpo_nancheck.c lapacke_spo_nancheck.c lapacke_zpb_nancheck.c | |||
| lapacke_cpb_nancheck.c lapacke_dpo_trans.c lapacke_spo_trans.c lapacke_zpb_trans.c | |||
| lapacke_cpb_trans.c lapacke_dpp_nancheck.c lapacke_spp_nancheck.c lapacke_zpf_nancheck.c | |||
| lapacke_cpf_nancheck.c lapacke_dpp_trans.c lapacke_spp_trans.c lapacke_zpf_trans.c | |||
| lapacke_cpf_trans.c lapacke_dpt_nancheck.c lapacke_spt_nancheck.c lapacke_zpo_nancheck.c | |||
| lapacke_cpo_nancheck.c lapacke_dsb_nancheck.c lapacke_ssb_nancheck.c lapacke_zpo_trans.c | |||
| lapacke_cpo_trans.c lapacke_dsb_trans.c lapacke_ssb_trans.c lapacke_zpp_nancheck.c | |||
| lapacke_cpp_nancheck.c lapacke_dsp_nancheck.c lapacke_ssp_nancheck.c lapacke_zpp_trans.c | |||
| lapacke_cpp_trans.c lapacke_dsp_trans.c lapacke_ssp_trans.c lapacke_zpt_nancheck.c | |||
| lapacke_cpt_nancheck.c lapacke_dst_nancheck.c lapacke_sst_nancheck.c lapacke_zsp_nancheck.c | |||
| lapacke_csp_nancheck.c lapacke_dsy_nancheck.c lapacke_ssy_nancheck.c lapacke_zsp_trans.c | |||
| lapacke_csp_trans.c lapacke_dsy_trans.c lapacke_ssy_trans.c lapacke_zst_nancheck.c | |||
| lapacke_cst_nancheck.c lapacke_dtb_nancheck.c lapacke_stb_nancheck.c lapacke_zsy_nancheck.c | |||
| lapacke_csy_nancheck.c lapacke_dtb_trans.c lapacke_stb_trans.c lapacke_zsy_trans.c | |||
| lapacke_csy_trans.c lapacke_dtf_nancheck.c lapacke_stf_nancheck.c lapacke_ztb_nancheck.c | |||
| lapacke_ctb_nancheck.c lapacke_dtf_trans.c lapacke_stf_trans.c lapacke_ztb_trans.c | |||
| lapacke_ctb_trans.c lapacke_dtp_nancheck.c lapacke_stp_nancheck.c lapacke_ztf_nancheck.c | |||
| lapacke_ctf_nancheck.c lapacke_dtp_trans.c lapacke_stp_trans.c lapacke_ztf_trans.c | |||
| lapacke_ctf_trans.c lapacke_dtr_nancheck.c lapacke_str_nancheck.c lapacke_ztp_nancheck.c | |||
| lapacke_ctp_nancheck.c lapacke_dtr_trans.c lapacke_str_trans.c lapacke_ztp_trans.c | |||
| lapacke_ctp_trans.c lapacke_lsame.c lapacke_xerbla.c lapacke_ztr_nancheck.c | |||
| lapacke_ctr_nancheck.c lapacke_make_complex_double.c lapacke_z_nancheck.c lapacke_ztr_trans.c | |||
| ) | |||
| set(LAPACKE_REL_SRC "") | |||
| @@ -2380,6 +2478,10 @@ if (BUILD_COMPLEX16) | |||
| list(APPEND LAPACKE_REL_SRC ${ZSRC}) | |||
| endif () | |||
| if (BUILD_MATGEN) | |||
| list(APPEND LAPACKE_REL_SRC ${MATGEN}) | |||
| endif () | |||
| # add lapack-netlib folder to the sources | |||
| set(LAPACKE_SOURCES "") | |||
| foreach (LAE_FILE ${LAPACKE_REL_SRC}) | |||
| @@ -3,19 +3,6 @@ | |||
| ## Description: Ported from portion of OpenBLAS/Makefile.system | |||
| ## Detects the OS and sets appropriate variables. | |||
| if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") | |||
| set(ENV{MACOSX_DEPLOYMENT_TARGET} "10.2") # TODO: should be exported as an env var | |||
| set(MD5SUM "md5 -r") | |||
| endif () | |||
| if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD") | |||
| set(MD5SUM "md5 -r") | |||
| endif () | |||
| if (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD") | |||
| set(MD5SUM "md5 -n") | |||
| endif () | |||
| if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") | |||
| set(EXTRALIB "${EXTRALIB} -lm") | |||
| set(NO_EXPRECISION 1) | |||
| @@ -56,7 +43,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |||
| # Ensure the correct stack alignment on Win32 | |||
| # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97 | |||
| if (${ARCH} STREQUAL "x86") | |||
| if (X86) | |||
| if (NOT MSVC AND NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang") | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2") | |||
| endif () | |||
| @@ -78,7 +65,7 @@ if (CYGWIN) | |||
| endif () | |||
| if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android") | |||
| if (SMP) | |||
| if (USE_THREAD) | |||
| set(EXTRALIB "${EXTRALIB} -lpthread") | |||
| endif () | |||
| endif () | |||
| @@ -88,7 +75,7 @@ if (QUAD_PRECISION) | |||
| set(NO_EXPRECISION 1) | |||
| endif () | |||
| if (${ARCH} STREQUAL "x86") | |||
| if (X86) | |||
| set(NO_EXPRECISION 1) | |||
| endif () | |||
| @@ -37,123 +37,208 @@ | |||
| # CPUIDEMU = ../../cpuid/table.o | |||
| if (DEFINED CPUIDEMU) | |||
| set(EXFLAGS "-DCPUIDEMU -DVENDOR=99") | |||
| endif () | |||
| if (DEFINED TARGET_CORE) | |||
| if (BUILD_KERNEL) | |||
| # set the C flags for just this file | |||
| set(GETARCH2_FLAGS "-DBUILD_KERNEL") | |||
| set(TARGET_MAKE "Makefile_kernel.conf") | |||
| set(TARGET_CONF "config_kernel.h") | |||
| set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE}) | |||
| else() | |||
| set(TARGET_MAKE "Makefile.conf") | |||
| set(TARGET_CONF "config.h") | |||
| set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}) | |||
| endif () | |||
| set(TARGET_CONF_TEMP "${PROJECT_BINARY_DIR}/${TARGET_CONF}.tmp") | |||
| include("${PROJECT_SOURCE_DIR}/cmake/c_check.cmake") | |||
| if (NOT NOFORTRAN) | |||
| include("${PROJECT_SOURCE_DIR}/cmake/f_check.cmake") | |||
| # c_check | |||
| set(FU "") | |||
| if (APPLE OR (MSVC AND NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang")) | |||
| set(FU "_") | |||
| endif() | |||
| set(COMPILER_ID ${CMAKE_C_COMPILER_ID}) | |||
| if (${COMPILER_ID} STREQUAL "GNU") | |||
| set(COMPILER_ID "GCC") | |||
| endif () | |||
| # compile getarch | |||
| set(GETARCH_SRC | |||
| ${PROJECT_SOURCE_DIR}/getarch.c | |||
| ${CPUIDEMO} | |||
| ) | |||
| string(TOUPPER ${ARCH} UC_ARCH) | |||
| if ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") | |||
| #Use generic for MSVC now | |||
| message("MSVC") | |||
| set(GETARCH_FLAGS ${GETARCH_FLAGS} -DFORCE_GENERIC) | |||
| else() | |||
| list(APPEND GETARCH_SRC ${PROJECT_SOURCE_DIR}/cpuid.S) | |||
| file(WRITE ${TARGET_CONF_TEMP} | |||
| "#define OS_${HOST_OS}\t1\n" | |||
| "#define ARCH_${UC_ARCH}\t1\n" | |||
| "#define C_${COMPILER_ID}\t1\n" | |||
| "#define __${BINARY}BIT__\t1\n" | |||
| "#define FUNDERSCORE\t${FU}\n") | |||
| if (${HOST_OS} STREQUAL "WINDOWSSTORE") | |||
| file(APPEND ${TARGET_CONF_TEMP} | |||
| "#define OS_WINNT\t1\n") | |||
| endif () | |||
| if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") | |||
| # disable WindowsStore strict CRT checks | |||
| set(GETARCH_FLAGS ${GETARCH_FLAGS} -D_CRT_SECURE_NO_WARNINGS) | |||
| # f_check | |||
| if (NOT NOFORTRAN) | |||
| include("${PROJECT_SOURCE_DIR}/cmake/f_check.cmake") | |||
| endif () | |||
| set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build") | |||
| set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}") | |||
| file(MAKE_DIRECTORY ${GETARCH_DIR}) | |||
| configure_file(${TARGET_CONF_TEMP} ${GETARCH_DIR}/${TARGET_CONF} COPYONLY) | |||
| if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") | |||
| try_compile(GETARCH_RESULT ${GETARCH_DIR} | |||
| SOURCES ${GETARCH_SRC} | |||
| COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} | |||
| OUTPUT_VARIABLE GETARCH_LOG | |||
| COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN} | |||
| # Cannot run getarch on target if we are cross-compiling | |||
| if (DEFINED CORE AND CMAKE_CROSSCOMPILING) | |||
| # Write to config as getarch would | |||
| # TODO: Set up defines that getarch sets up based on every other target | |||
| # Perhaps this should be inside a different file as it grows larger | |||
| file(APPEND ${TARGET_CONF_TEMP} | |||
| "#define ${CORE}\n" | |||
| "#define CHAR_CORENAME \"${CORE}\"\n") | |||
| if ("${CORE}" STREQUAL "ARMV7") | |||
| file(APPEND ${TARGET_CONF_TEMP} | |||
| "#define L1_DATA_SIZE\t65536\n" | |||
| "#define L1_DATA_LINESIZE\t32\n" | |||
| "#define L2_SIZE\t512488\n" | |||
| "#define L2_LINESIZE\t32\n" | |||
| "#define DTB_DEFAULT_ENTRIES\t64\n" | |||
| "#define DTB_SIZE\t4096\n" | |||
| "#define L2_ASSOCIATIVE\t4\n" | |||
| "#define HAVE_VFPV3\n" | |||
| "#define HAVE_VFP\n") | |||
| set(SGEMM_UNROLL_M 4) | |||
| set(SGEMM_UNROLL_N 4) | |||
| set(DGEMM_UNROLL_M 4) | |||
| set(DGEMM_UNROLL_N 4) | |||
| elseif ("${CORE}" STREQUAL "ARMV8") | |||
| file(APPEND ${TARGET_CONF_TEMP} | |||
| "#define L1_DATA_SIZE\t32768\n" | |||
| "#define L1_DATA_LINESIZE\t64\n" | |||
| "#define L2_SIZE\t262144\n" | |||
| "#define L2_LINESIZE\t64\n" | |||
| "#define DTB_DEFAULT_ENTRIES\t64\n" | |||
| "#define DTB_SIZE\t4096\n" | |||
| "#define L2_ASSOCIATIVE\t32\n") | |||
| set(SGEMM_UNROLL_M 4) | |||
| set(SGEMM_UNROLL_N 4) | |||
| elseif ("${CORE}" STREQUAL "CORTEXA57") | |||
| file(APPEND ${TARGET_CONF_TEMP} | |||
| "#define L1_CODE_SIZE\t49152\n" | |||
| "#define L1_CODE_LINESIZE\t64\n" | |||
| "#define L1_CODE_ASSOCIATIVE\t3\n" | |||
| "#define L1_DATA_SIZE\t32768\n" | |||
| "#define L1_DATA_LINESIZE\t64\n" | |||
| "#define L1_DATA_ASSOCIATIVE\t2\n" | |||
| "#define L2_SIZE\t2097152\n" | |||
| "#define L2_LINESIZE\t64\n" | |||
| "#define L2_ASSOCIATIVE\t16\n" | |||
| "#define DTB_DEFAULT_ENTRIES\t64\n" | |||
| "#define DTB_SIZE\t4096\n" | |||
| "#define HAVE_VFPV4\n" | |||
| "#define HAVE_VFPV3\n" | |||
| "#define HAVE_VFP\n" | |||
| "#define HAVE_NEON\n") | |||
| set(SGEMM_UNROLL_M 16) | |||
| set(SGEMM_UNROLL_N 4) | |||
| set(DGEMM_UNROLL_M 8) | |||
| set(DGEMM_UNROLL_N 4) | |||
| set(CGEMM_UNROLL_M 8) | |||
| set(CGEMM_UNROLL_N 4) | |||
| set(ZGEMM_UNROLL_M 8) | |||
| set(ZGEMM_UNROLL_N 4) | |||
| endif() | |||
| # Or should this actually be NUM_CORES? | |||
| if (${NUM_THREADS} GREATER 0) | |||
| file(APPEND ${TARGET_CONF_TEMP} "#define NUM_CORES\t${NUM_THREADS}\n") | |||
| endif() | |||
| # GetArch_2nd | |||
| foreach(float_char S;D;Q;C;Z;X) | |||
| if (NOT DEFINED ${float_char}GEMM_UNROLL_M) | |||
| set(${float_char}GEMM_UNROLL_M 2) | |||
| endif() | |||
| if (NOT DEFINED ${float_char}GEMM_UNROLL_N) | |||
| set(${float_char}GEMM_UNROLL_N 2) | |||
| endif() | |||
| endforeach() | |||
| file(APPEND ${TARGET_CONF_TEMP} | |||
| "#define GEMM_MULTITHREAD_THRESHOLD\t${GEMM_MULTITHREAD_THRESHOLD}\n") | |||
| # Move to where gen_config_h would place it | |||
| file(RENAME ${TARGET_CONF_TEMP} "${TARGET_CONF_DIR}/${TARGET_CONF}") | |||
| else(NOT CMAKE_CROSSCOMPILING) | |||
| # compile getarch | |||
| set(GETARCH_SRC | |||
| ${PROJECT_SOURCE_DIR}/getarch.c | |||
| ${CPUIDEMU} | |||
| ) | |||
| if (NOT ${GETARCH_RESULT}) | |||
| MESSAGE(FATAL_ERROR "Compiling getarch failed ${GETARCH_LOG}") | |||
| if ("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") | |||
| #Use generic for MSVC now | |||
| message("MSVC") | |||
| set(GETARCH_FLAGS ${GETARCH_FLAGS} -DFORCE_GENERIC) | |||
| else() | |||
| list(APPEND GETARCH_SRC ${PROJECT_SOURCE_DIR}/cpuid.S) | |||
| endif () | |||
| endif () | |||
| message(STATUS "Running getarch") | |||
| # use the cmake binary w/ the -E param to run a shell command in a cross-platform way | |||
| execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 0 OUTPUT_VARIABLE GETARCH_MAKE_OUT) | |||
| execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH_BIN} 1 OUTPUT_VARIABLE GETARCH_CONF_OUT) | |||
| message(STATUS "GETARCH results:\n${GETARCH_MAKE_OUT}") | |||
| # append config data from getarch to the TARGET file and read in CMake vars | |||
| file(APPEND ${TARGET_CONF_TEMP} ${GETARCH_CONF_OUT}) | |||
| ParseGetArchVars(${GETARCH_MAKE_OUT}) | |||
| set(GETARCH2_DIR "${PROJECT_BINARY_DIR}/getarch2_build") | |||
| set(GETARCH2_BIN "getarch_2nd${CMAKE_EXECUTABLE_SUFFIX}") | |||
| file(MAKE_DIRECTORY ${GETARCH2_DIR}) | |||
| configure_file(${TARGET_CONF_TEMP} ${GETARCH2_DIR}/${TARGET_CONF} COPYONLY) | |||
| if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") | |||
| try_compile(GETARCH2_RESULT ${GETARCH2_DIR} | |||
| SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c | |||
| COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} | |||
| OUTPUT_VARIABLE GETARCH2_LOG | |||
| COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} | |||
| ) | |||
| if (NOT ${GETARCH2_RESULT}) | |||
| MESSAGE(FATAL_ERROR "Compiling getarch_2nd failed ${GETARCH2_LOG}") | |||
| if ("${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") | |||
| # disable WindowsStore strict CRT checks | |||
| set(GETARCH_FLAGS ${GETARCH_FLAGS} -D_CRT_SECURE_NO_WARNINGS) | |||
| endif () | |||
| endif () | |||
| # use the cmake binary w/ the -E param to run a shell command in a cross-platform way | |||
| execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 0 OUTPUT_VARIABLE GETARCH2_MAKE_OUT) | |||
| execute_process(COMMAND ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT) | |||
| set(GETARCH_DIR "${PROJECT_BINARY_DIR}/getarch_build") | |||
| set(GETARCH_BIN "getarch${CMAKE_EXECUTABLE_SUFFIX}") | |||
| file(MAKE_DIRECTORY ${GETARCH_DIR}) | |||
| configure_file(${TARGET_CONF_TEMP} ${GETARCH_DIR}/${TARGET_CONF} COPYONLY) | |||
| if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") | |||
| try_compile(GETARCH_RESULT ${GETARCH_DIR} | |||
| SOURCES ${GETARCH_SRC} | |||
| COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} -I${GETARCH_DIR} -I"${PROJECT_SOURCE_DIR}" -I"${PROJECT_BINARY_DIR}" | |||
| OUTPUT_VARIABLE GETARCH_LOG | |||
| COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH_BIN} | |||
| ) | |||
| if (NOT ${GETARCH_RESULT}) | |||
| MESSAGE(FATAL_ERROR "Compiling getarch failed ${GETARCH_LOG}") | |||
| endif () | |||
| endif () | |||
| message(STATUS "Running getarch") | |||
| # use the cmake binary w/ the -E param to run a shell command in a cross-platform way | |||
| execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH_BIN}" 0 OUTPUT_VARIABLE GETARCH_MAKE_OUT) | |||
| execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH_BIN}" 1 OUTPUT_VARIABLE GETARCH_CONF_OUT) | |||
| message(STATUS "GETARCH results:\n${GETARCH_MAKE_OUT}") | |||
| # append config data from getarch to the TARGET file and read in CMake vars | |||
| file(APPEND ${TARGET_CONF_TEMP} ${GETARCH_CONF_OUT}) | |||
| ParseGetArchVars(${GETARCH_MAKE_OUT}) | |||
| set(GETARCH2_DIR "${PROJECT_BINARY_DIR}/getarch2_build") | |||
| set(GETARCH2_BIN "getarch_2nd${CMAKE_EXECUTABLE_SUFFIX}") | |||
| file(MAKE_DIRECTORY ${GETARCH2_DIR}) | |||
| configure_file(${TARGET_CONF_TEMP} ${GETARCH2_DIR}/${TARGET_CONF} COPYONLY) | |||
| if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") | |||
| try_compile(GETARCH2_RESULT ${GETARCH2_DIR} | |||
| SOURCES ${PROJECT_SOURCE_DIR}/getarch_2nd.c | |||
| COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GETARCH2_FLAGS} -I${GETARCH2_DIR} -I"${PROJECT_SOURCE_DIR}" -I"${PROJECT_BINARY_DIR}" | |||
| OUTPUT_VARIABLE GETARCH2_LOG | |||
| COPY_FILE ${PROJECT_BINARY_DIR}/${GETARCH2_BIN} | |||
| ) | |||
| if (NOT ${GETARCH2_RESULT}) | |||
| MESSAGE(FATAL_ERROR "Compiling getarch_2nd failed ${GETARCH2_LOG}") | |||
| endif () | |||
| endif () | |||
| # append config data from getarch_2nd to the TARGET file and read in CMake vars | |||
| file(APPEND ${TARGET_CONF_TEMP} ${GETARCH2_CONF_OUT}) | |||
| # use the cmake binary w/ the -E param to run a shell command in a cross-platform way | |||
| execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH2_BIN}" 0 OUTPUT_VARIABLE GETARCH2_MAKE_OUT) | |||
| execute_process(COMMAND "${PROJECT_BINARY_DIR}/${GETARCH2_BIN}" 1 OUTPUT_VARIABLE GETARCH2_CONF_OUT) | |||
| if (${BUILD_KERNEL}) | |||
| configure_file(${TARGET_CONF_TEMP} ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE}/${TARGET_CONF} COPYONLY) | |||
| else () | |||
| configure_file(${TARGET_CONF_TEMP} ${PROJECT_BINARY_DIR}/${TARGET_CONF} COPYONLY) | |||
| endif () | |||
| # append config data from getarch_2nd to the TARGET file and read in CMake vars | |||
| file(APPEND ${TARGET_CONF_TEMP} ${GETARCH2_CONF_OUT}) | |||
| ParseGetArchVars(${GETARCH2_MAKE_OUT}) | |||
| configure_file(${TARGET_CONF_TEMP} ${TARGET_CONF_DIR}/${TARGET_CONF} COPYONLY) | |||
| # compile get_config_h | |||
| set(GEN_CONFIG_H_DIR "${PROJECT_BINARY_DIR}/genconfig_h_build") | |||
| set(GEN_CONFIG_H_BIN "gen_config_h${CMAKE_EXECUTABLE_SUFFIX}") | |||
| set(GEN_CONFIG_H_FLAGS "-DVERSION=\"${OpenBLAS_VERSION}\"") | |||
| file(MAKE_DIRECTORY ${GEN_CONFIG_H_DIR}) | |||
| ParseGetArchVars(${GETARCH2_MAKE_OUT}) | |||
| if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "WindowsStore") | |||
| try_compile(GEN_CONFIG_H_RESULT ${GEN_CONFIG_H_DIR} | |||
| SOURCES ${PROJECT_SOURCE_DIR}/gen_config_h.c | |||
| COMPILE_DEFINITIONS ${EXFLAGS} ${GETARCH_FLAGS} ${GEN_CONFIG_H_FLAGS} -I${PROJECT_SOURCE_DIR} | |||
| OUTPUT_VARIABLE GEN_CONFIG_H_LOG | |||
| COPY_FILE ${PROJECT_BINARY_DIR}/${GEN_CONFIG_H_BIN} | |||
| ) | |||
| if (NOT ${GEN_CONFIG_H_RESULT}) | |||
| MESSAGE(FATAL_ERROR "Compiling gen_config_h failed ${GEN_CONFIG_H_LOG}") | |||
| endif () | |||
| endif () | |||
| endif() | |||
| @@ -4,10 +4,25 @@ | |||
| ## | |||
| set(NETLIB_LAPACK_DIR "${PROJECT_SOURCE_DIR}/lapack-netlib") | |||
| # TODO: Makefile.system detects Darwin (mac) and switches to clang here -hpa | |||
| # http://stackoverflow.com/questions/714100/os-detecting-makefile | |||
| # System detection, via CMake. | |||
| include("${PROJECT_SOURCE_DIR}/cmake/system_check.cmake") | |||
| if(CMAKE_CROSSCOMPILING AND NOT DEFINED TARGET) | |||
| # Detect target without running getarch | |||
| if (ARM64) | |||
| set(TARGET "ARMV8") | |||
| elseif(ARM) | |||
| set(TARGET "ARMV7") # TODO: Ask compiler which arch this is | |||
| else() | |||
| message(FATAL_ERROR "When cross compiling, a TARGET is required.") | |||
| endif() | |||
| endif() | |||
| # TODO: Makefile.system sets HOSTCC = $(CC) here if not already set -hpa | |||
| # Other files expect CORE, which is actually TARGET and will become TARGET_CORE for kernel build. Confused yet? | |||
| # It seems we are meant to use TARGET as input and CORE internally as kernel. | |||
| if(NOT DEFINED CORE AND DEFINED TARGET) | |||
| set(CORE ${TARGET}) | |||
| endif() | |||
| # TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1. | |||
| if (DEFINED TARGET_CORE) | |||
| @@ -27,7 +42,7 @@ if (DEFINED BINARY AND DEFINED TARGET AND BINARY EQUAL 32) | |||
| endif () | |||
| if (DEFINED TARGET) | |||
| message(STATUS "Targetting the ${TARGET} architecture.") | |||
| message(STATUS "Targeting the ${TARGET} architecture.") | |||
| set(GETARCH_FLAGS "-DFORCE_${TARGET}") | |||
| endif () | |||
| @@ -52,21 +67,16 @@ if (NO_AVX2) | |||
| set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_AVX2") | |||
| endif () | |||
| if (CMAKE_BUILD_TYPE STREQUAL Debug) | |||
| set(GETARCH_FLAGS "${GETARCH_FLAGS} -g") | |||
| if (CMAKE_BUILD_TYPE STREQUAL "Debug") | |||
| set(GETARCH_FLAGS "${GETARCH_FLAGS} ${CMAKE_C_FLAGS_DEBUG}") | |||
| endif () | |||
| # TODO: let CMake handle this? -hpa | |||
| #if (${QUIET_MAKE}) | |||
| # set(MAKE "${MAKE} -s") | |||
| #endif() | |||
| if (NOT DEFINED NO_PARALLEL_MAKE) | |||
| set(NO_PARALLEL_MAKE 0) | |||
| endif () | |||
| set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_PARALLEL_MAKE=${NO_PARALLEL_MAKE}") | |||
| if (CMAKE_CXX_COMPILER STREQUAL loongcc) | |||
| if (CMAKE_C_COMPILER STREQUAL loongcc) | |||
| set(GETARCH_FLAGS "${GETARCH_FLAGS} -static") | |||
| endif () | |||
| @@ -77,51 +87,40 @@ else () | |||
| set(ONLY_CBLAS 0) | |||
| endif () | |||
| include("${PROJECT_SOURCE_DIR}/cmake/prebuild.cmake") | |||
| # N.B. this is NUM_THREAD in Makefile.system which is probably a bug -hpa | |||
| if (NOT CMAKE_CROSSCOMPILING) | |||
| if (NOT DEFINED NUM_CORES) | |||
| include(ProcessorCount) | |||
| ProcessorCount(NUM_CORES) | |||
| endif() | |||
| endif() | |||
| if (NOT DEFINED NUM_THREADS) | |||
| set(NUM_THREADS ${NUM_CORES}) | |||
| endif () | |||
| if (NOT NUM_CORES EQUAL 0) | |||
| # HT? | |||
| set(NUM_THREADS ${NUM_CORES}) | |||
| else () | |||
| set(NUM_THREADS 0) | |||
| endif () | |||
| endif() | |||
| if (${NUM_THREADS} EQUAL 1) | |||
| if (${NUM_THREADS} LESS 2) | |||
| set(USE_THREAD 0) | |||
| elseif(NOT DEFINED USE_THREAD) | |||
| set(USE_THREAD 1) | |||
| endif () | |||
| if (DEFINED USE_THREAD) | |||
| if (NOT ${USE_THREAD}) | |||
| unset(SMP) | |||
| else () | |||
| set(SMP 1) | |||
| endif () | |||
| else () | |||
| # N.B. this is NUM_THREAD in Makefile.system which is probably a bug -hpa | |||
| if (${NUM_THREADS} EQUAL 1) | |||
| unset(SMP) | |||
| else () | |||
| set(SMP 1) | |||
| endif () | |||
| if (USE_THREAD) | |||
| message(STATUS "Multi-threading enabled with ${NUM_THREADS} threads.") | |||
| endif () | |||
| if (${SMP}) | |||
| message(STATUS "SMP enabled.") | |||
| endif () | |||
| include("${PROJECT_SOURCE_DIR}/cmake/prebuild.cmake") | |||
| if (NOT DEFINED NEED_PIC) | |||
| set(NEED_PIC 1) | |||
| endif () | |||
| # TODO: I think CMake should be handling all this stuff -hpa | |||
| unset(ARFLAGS) | |||
| set(CPP "${COMPILER} -E") | |||
| set(AR "${CROSS_SUFFIX}ar") | |||
| set(AS "${CROSS_SUFFIX}as") | |||
| set(LD "${CROSS_SUFFIX}ld") | |||
| set(RANLIB "${CROSS_SUFFIX}ranlib") | |||
| set(NM "${CROSS_SUFFIX}nm") | |||
| set(DLLWRAP "${CROSS_SUFFIX}dllwrap") | |||
| set(OBJCOPY "${CROSS_SUFFIX}objcopy") | |||
| set(OBJCONV "${CROSS_SUFFIX}objconv") | |||
| # OS dependent settings | |||
| include("${PROJECT_SOURCE_DIR}/cmake/os.cmake") | |||
| @@ -149,11 +148,13 @@ if (NEED_PIC) | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -fPIC") | |||
| endif () | |||
| if (${F_COMPILER} STREQUAL "SUN") | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -pic") | |||
| else () | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -fPIC") | |||
| endif () | |||
| if (NOT NOFORTRAN) | |||
| if (${F_COMPILER} STREQUAL "SUN") | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -pic") | |||
| else () | |||
| set(FCOMMON_OPT "${FCOMMON_OPT} -fPIC") | |||
| endif () | |||
| endif() | |||
| endif () | |||
| if (DYNAMIC_ARCH) | |||
| @@ -174,7 +175,7 @@ if (NO_AVX) | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX") | |||
| endif () | |||
| if (${ARCH} STREQUAL "x86") | |||
| if (X86) | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX") | |||
| endif () | |||
| @@ -182,25 +183,20 @@ if (NO_AVX2) | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX2") | |||
| endif () | |||
| if (SMP) | |||
| if (USE_THREAD) | |||
| # USE_SIMPLE_THREADED_LEVEL3 = 1 | |||
| # NO_AFFINITY = 1 | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER") | |||
| if (${ARCH} STREQUAL "mips64") | |||
| if (MIPS64) | |||
| if (NOT ${CORE} STREQUAL "LOONGSON3B") | |||
| set(USE_SIMPLE_THREADED_LEVEL3 1) | |||
| endif () | |||
| endif () | |||
| if (USE_OPENMP) | |||
| # USE_SIMPLE_THREADED_LEVEL3 = 1 | |||
| # NO_AFFINITY = 1 | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_OPENMP") | |||
| endif () | |||
| if (BIGNUMA) | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DBIGNUMA") | |||
| endif () | |||
| endif () | |||
| if (NO_WARMUP) | |||
| @@ -263,7 +259,7 @@ if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") | |||
| set(NO_AFFINITY 1) | |||
| endif () | |||
| if (NOT ${ARCH} STREQUAL "x86_64" AND NOT ${ARCH} STREQUAL "x86" AND NOT ${CORE} STREQUAL "LOONGSON3B") | |||
| if (NOT X86_64 AND NOT X86 AND NOT ${CORE} STREQUAL "LOONGSON3B") | |||
| set(NO_AFFINITY 1) | |||
| endif () | |||
| @@ -295,52 +291,19 @@ if (MIXED_MEMORY_ALLOCATION) | |||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DMIXED_MEMORY_ALLOCATION") | |||
| endif () | |||
| if (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS") | |||
| set(TAR gtar) | |||
| set(PATCH gpatch) | |||
| set(GREP ggrep) | |||
| else () | |||
| set(TAR tar) | |||
| set(PATCH patch) | |||
| set(GREP grep) | |||
| endif () | |||
| if (NOT DEFINED MD5SUM) | |||
| set(MD5SUM md5sum) | |||
| endif () | |||
| set(AWK awk) | |||
| set(SED sed) | |||
| set(REVISION "-r${OpenBLAS_VERSION}") | |||
| set(MAJOR_VERSION ${OpenBLAS_MAJOR_VERSION}) | |||
| if (DEBUG) | |||
| set(COMMON_OPT "${COMMON_OPT} -g") | |||
| endif () | |||
| if (NOT DEFINED COMMON_OPT) | |||
| set(COMMON_OPT "-O2") | |||
| endif () | |||
| #For x86 32-bit | |||
| if (DEFINED BINARY AND BINARY EQUAL 32) | |||
| if (NOT MSVC) | |||
| set(COMMON_OPT "${COMMON_OPT} -m32") | |||
| endif() | |||
| endif() | |||
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_OPT} ${CCOMMON_OPT}") | |||
| set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CCOMMON_OPT}") | |||
| if(NOT MSVC) | |||
| set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${COMMON_OPT} ${CCOMMON_OPT}") | |||
| set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${CCOMMON_OPT}") | |||
| endif() | |||
| # TODO: not sure what PFLAGS is -hpa | |||
| set(PFLAGS "${PFLAGS} ${COMMON_OPT} ${CCOMMON_OPT} -I${TOPDIR} -DPROFILE ${COMMON_PROF}") | |||
| set(PFLAGS "${PFLAGS} ${CCOMMON_OPT} -I${TOPDIR} -DPROFILE ${COMMON_PROF}") | |||
| set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${COMMON_OPT} ${FCOMMON_OPT}") | |||
| set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${FCOMMON_OPT}") | |||
| # TODO: not sure what FPFLAGS is -hpa | |||
| set(FPFLAGS "${FPFLAGS} ${COMMON_OPT} ${FCOMMON_OPT} ${COMMON_PROF}") | |||
| set(FPFLAGS "${FPFLAGS} ${FCOMMON_OPT} ${COMMON_PROF}") | |||
| #For LAPACK Fortran codes. | |||
| set(LAPACK_FFLAGS "${LAPACK_FFLAGS} ${CMAKE_Fortran_FLAGS}") | |||
| @@ -348,7 +311,7 @@ set(LAPACK_FPFLAGS "${LAPACK_FPFLAGS} ${FPFLAGS}") | |||
| #Disable -fopenmp for LAPACK Fortran codes on Windows. | |||
| if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |||
| set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parralel") | |||
| set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parallel") | |||
| foreach (FILTER_FLAG ${FILTER_FLAGS}) | |||
| string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS}) | |||
| string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS}) | |||
| @@ -386,7 +349,7 @@ if (NOT DEFINED LIBSUFFIX) | |||
| endif () | |||
| if (DYNAMIC_ARCH) | |||
| if (DEFINED SMP) | |||
| if (USE_THREAD) | |||
| set(LIBNAME "${LIBPREFIX}p${REVISION}.${LIBSUFFIX}") | |||
| set(LIBNAME_P "${LIBPREFIX}p${REVISION}_p.${LIBSUFFIX}") | |||
| else () | |||
| @@ -394,7 +357,7 @@ if (DYNAMIC_ARCH) | |||
| set(LIBNAME_P "${LIBPREFIX}${REVISION}_p.${LIBSUFFIX}") | |||
| endif () | |||
| else () | |||
| if (DEFINED SMP) | |||
| if (USE_THREAD) | |||
| set(LIBNAME "${LIBPREFIX}_${LIBCORE}p${REVISION}.${LIBSUFFIX}") | |||
| set(LIBNAME_P "${LIBPREFIX}_${LIBCORE}p${REVISION}_p.${LIBSUFFIX}") | |||
| else () | |||
| @@ -425,6 +388,9 @@ if (NOT NO_LAPACK) | |||
| if (NOT NO_LAPACKE) | |||
| set(LIB_COMPONENTS "${LIB_COMPONENTS} LAPACKE") | |||
| endif () | |||
| if (BUILD_RELAPACK) | |||
| set(LIB_COMPONENTS "${LIB_COMPONENTS} ReLAPACK") | |||
| endif () | |||
| endif () | |||
| if (ONLY_CBLAS) | |||
| @@ -436,7 +402,7 @@ endif () | |||
| set(USE_GEMM3M 0) | |||
| if (DEFINED ARCH) | |||
| if (${ARCH} STREQUAL "x86" OR ${ARCH} STREQUAL "x86_64" OR ${ARCH} STREQUAL "ia64" OR ${ARCH} STREQUAL "MIPS") | |||
| if (X86 OR X86_64 OR ${ARCH} STREQUAL "ia64" OR MIPS64) | |||
| set(USE_GEMM3M 1) | |||
| endif () | |||
| @@ -519,35 +485,3 @@ endif () | |||
| # export CUFLAGS | |||
| # export CULIB | |||
| #endif | |||
| #.SUFFIXES: .$(PSUFFIX) .$(SUFFIX) .f | |||
| # | |||
| #.f.$(SUFFIX): | |||
| # $(FC) $(FFLAGS) -c $< -o $(@F) | |||
| # | |||
| #.f.$(PSUFFIX): | |||
| # $(FC) $(FPFLAGS) -pg -c $< -o $(@F) | |||
| # these are not cross-platform | |||
| #ifdef BINARY64 | |||
| #PATHSCALEPATH = /opt/pathscale/lib/3.1 | |||
| #PGIPATH = /opt/pgi/linux86-64/7.1-5/lib | |||
| #else | |||
| #PATHSCALEPATH = /opt/pathscale/lib/3.1/32 | |||
| #PGIPATH = /opt/pgi/linux86/7.1-5/lib | |||
| #endif | |||
| #ACMLPATH = /opt/acml/4.3.0 | |||
| #ifneq ($(OSNAME), Darwin) | |||
| #MKLPATH = /opt/intel/mkl/10.2.2.025/lib | |||
| #else | |||
| #MKLPATH = /Library/Frameworks/Intel_MKL.framework/Versions/10.0.1.014/lib | |||
| #endif | |||
| #ATLASPATH = /opt/atlas/3.9.17/opteron | |||
| #FLAMEPATH = $(HOME)/flame/lib | |||
| #ifneq ($(OSNAME), SunOS) | |||
| #SUNPATH = /opt/sunstudio12.1 | |||
| #else | |||
| #SUNPATH = /opt/SUNWspro | |||
| #endif | |||
| @@ -0,0 +1,68 @@ | |||
| ## | |||
| ## Author: Hank Anderson <hank@statease.com> | |||
| ## Description: Ported from the OpenBLAS/c_check perl script. | |||
| ## This is triggered by prebuild.cmake and runs before any of the code is built. | |||
| ## Creates config.h and Makefile.conf. | |||
| # Convert CMake vars into the format that OpenBLAS expects | |||
| string(TOUPPER ${CMAKE_SYSTEM_NAME} HOST_OS) | |||
| if (${HOST_OS} STREQUAL "WINDOWS") | |||
| set(HOST_OS WINNT) | |||
| endif () | |||
| if(CMAKE_COMPILER_IS_GNUCC AND WIN32) | |||
| execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpmachine | |||
| OUTPUT_VARIABLE OPENBLAS_GCC_TARGET_MACHINE | |||
| OUTPUT_STRIP_TRAILING_WHITESPACE) | |||
| if(OPENBLAS_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64") | |||
| set(MINGW64 1) | |||
| endif() | |||
| endif() | |||
| # Pretty thorough determination of arch. Add more if needed | |||
| if(CMAKE_CL_64 OR MINGW64) | |||
| set(X86_64 1) | |||
| elseif(MINGW OR (MSVC AND NOT CMAKE_CROSSCOMPILING)) | |||
| set(X86 1) | |||
| elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc.*|power.*|Power.*") | |||
| set(PPC 1) | |||
| elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "mips64.*") | |||
| set(MIPS64 1) | |||
| elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "amd64.*|x86_64.*|AMD64.*") | |||
| set(X86_64 1) | |||
| elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "i686.*|i386.*|x86.*|amd64.*|AMD64.*") | |||
| set(X86 1) | |||
| elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(arm.*|ARM.*)") | |||
| set(ARM 1) | |||
| elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64.*|AARCH64.*)") | |||
| set(ARM64 1) | |||
| endif() | |||
| if (X86_64) | |||
| set(ARCH "x86_64") | |||
| elseif(X86) | |||
| set(ARCH "x86") | |||
| elseif(PPC) | |||
| set(ARCH "power") | |||
| elseif(ARM) | |||
| set(ARCH "arm") | |||
| elseif(ARM64) | |||
| set(ARCH "arm64") | |||
| else() | |||
| set(ARCH ${CMAKE_SYSTEM_PROCESSOR} CACHE STRING "Target Architecture") | |||
| endif () | |||
| if (NOT BINARY) | |||
| if (X86_64 OR ARM64 OR PPC OR MIPS64) | |||
| set(BINARY 64) | |||
| else () | |||
| set(BINARY 32) | |||
| endif () | |||
| endif() | |||
| if(BINARY EQUAL 64) | |||
| set(BINARY64 1) | |||
| else() | |||
| set(BINARY32 1) | |||
| endif() | |||
| @@ -888,7 +888,7 @@ BLASLONG (*ixamin_k)(BLASLONG, xdouble *, BLASLONG); | |||
| int (*sgeadd_k) (BLASLONG, BLASLONG, float, float *, BLASLONG, float, float *, BLASLONG); | |||
| int (*dgeadd_k) (BLASLONG, BLASLONG, double, double *, BLASLONG, double, double *, BLASLONG); | |||
| int (*cgeadd_k) (BLASLONG, BLASLONG, float, float, float *, BLASLONG, float, float, float *, BLASLONG); | |||
| int (*zgeadd_k) (BLASLONG, BLASLONG, float, double, double *, BLASLONG, double, double, double *, BLASLONG); | |||
| int (*zgeadd_k) (BLASLONG, BLASLONG, double, double, double *, BLASLONG, double, double, double *, BLASLONG); | |||
| } gotoblas_t; | |||
| @@ -76,6 +76,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| #define CPU_LOONGSON3B 3 | |||
| #define CPU_I6400 4 | |||
| #define CPU_P6600 5 | |||
| #define CPU_I6500 6 | |||
| static char *cpuname[] = { | |||
| "UNKOWN", | |||
| @@ -83,7 +84,8 @@ static char *cpuname[] = { | |||
| "LOONGSON3A", | |||
| "LOONGSON3B", | |||
| "I6400", | |||
| "P6600" | |||
| "P6600", | |||
| "I6500" | |||
| }; | |||
| int detect(void){ | |||
| @@ -165,6 +167,8 @@ void get_subarchitecture(void){ | |||
| printf("I6400"); | |||
| }else if(detect()==CPU_P6600){ | |||
| printf("P6600"); | |||
| }else if(detect()==CPU_I6500){ | |||
| printf("I6500"); | |||
| }else{ | |||
| printf("SICORTEX"); | |||
| } | |||
| @@ -211,6 +215,15 @@ void get_cpuconfig(void){ | |||
| printf("#define DTB_DEFAULT_ENTRIES 64\n"); | |||
| printf("#define DTB_SIZE 4096\n"); | |||
| printf("#define L2_ASSOCIATIVE 8\n"); | |||
| }else if(detect()==CPU_I6500){ | |||
| printf("#define I6500\n"); | |||
| printf("#define L1_DATA_SIZE 65536\n"); | |||
| printf("#define L1_DATA_LINESIZE 32\n"); | |||
| printf("#define L2_SIZE 1048576\n"); | |||
| printf("#define L2_LINESIZE 32\n"); | |||
| printf("#define DTB_DEFAULT_ENTRIES 64\n"); | |||
| printf("#define DTB_SIZE 4096\n"); | |||
| printf("#define L2_ASSOCIATIVE 8\n"); | |||
| }else{ | |||
| printf("#define SICORTEX\n"); | |||
| printf("#define L1_DATA_SIZE 32768\n"); | |||
| @@ -232,6 +245,8 @@ void get_libname(void){ | |||
| printf("i6400\n"); | |||
| }else if(detect()==CPU_P6600) { | |||
| printf("p6600\n"); | |||
| }else if(detect()==CPU_I6500) { | |||
| printf("i6500\n"); | |||
| }else{ | |||
| printf("mips64\n"); | |||
| } | |||
| @@ -49,6 +49,7 @@ void get_subdirname(void){ | |||
| } | |||
| void get_cpuconfig(void){ | |||
| printf("#define SPARC\n"); | |||
| printf("#define V9\n"); | |||
| printf("#define DTB_DEFAULT_ENTRIES 32\n"); | |||
| } | |||
| @@ -16,7 +16,7 @@ foreach(float_type ${FLOAT_TYPES}) | |||
| add_executable(x${float_char}cblat1 | |||
| c_${float_char}blat1.f | |||
| c_${float_char}blas1.c) | |||
| target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME}_static) | |||
| target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME}) | |||
| add_test(NAME "x${float_char}cblat1" | |||
| COMMAND "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat1") | |||
| @@ -28,7 +28,7 @@ foreach(float_type ${FLOAT_TYPES}) | |||
| auxiliary.c | |||
| c_xerbla.c | |||
| constant.c) | |||
| target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME}_static) | |||
| target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME}) | |||
| add_test(NAME "x${float_char}cblat2" | |||
| COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test_cblas_helper.sh" "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat2" "${PROJECT_SOURCE_DIR}/ctest/${float_char}in2") | |||
| @@ -40,7 +40,7 @@ foreach(float_type ${FLOAT_TYPES}) | |||
| auxiliary.c | |||
| c_xerbla.c | |||
| constant.c) | |||
| target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME}_static) | |||
| target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME}) | |||
| add_test(NAME "x${float_char}cblat3" | |||
| COMMAND sh "${CMAKE_CURRENT_BINARY_DIR}/test_cblas_helper.sh" "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat3" "${PROJECT_SOURCE_DIR}/ctest/${float_char}in3") | |||
| @@ -9,7 +9,7 @@ | |||
| #include "common.h" | |||
| #include "cblas_test.h" | |||
| void F77_caxpy(const int *N, const void *alpha, void *X, | |||
| void F77_caxpy(const int *N, OPENBLAS_CONST void *alpha, void *X, | |||
| const int *incX, void *Y, const int *incY) | |||
| { | |||
| cblas_caxpy(*N, alpha, X, *incX, Y, *incY); | |||
| @@ -58,13 +58,13 @@ void F77_cswap( const int *N, void *X, const int *incX, | |||
| return; | |||
| } | |||
| int F77_icamax(const int *N, const void *X, const int *incX) | |||
| int F77_icamax(const int *N, OPENBLAS_CONST void *X, const int *incX) | |||
| { | |||
| if (*N < 1 || *incX < 1) return(0); | |||
| return (cblas_icamax(*N, X, *incX)+1); | |||
| } | |||
| float F77_scnrm2(const int *N, const void *X, const int *incX) | |||
| float F77_scnrm2(const int *N, OPENBLAS_CONST void *X, const int *incX) | |||
| { | |||
| return cblas_scnrm2(*N, X, *incX); | |||
| } | |||
| @@ -9,9 +9,9 @@ | |||
| #include "cblas_test.h" | |||
| void F77_cgemv(int *order, char *transp, int *m, int *n, | |||
| const void *alpha, | |||
| CBLAS_TEST_COMPLEX *a, int *lda, const void *x, int *incx, | |||
| const void *beta, void *y, int *incy) { | |||
| OPENBLAS_CONST void *alpha, | |||
| CBLAS_TEST_COMPLEX *a, int *lda, OPENBLAS_CONST void *x, int *incx, | |||
| OPENBLAS_CONST void *beta, void *y, int *incy) { | |||
| CBLAS_TEST_COMPLEX *A; | |||
| int i,j,LDA; | |||
| @@ -349,13 +349,13 @@ | |||
| CALL CCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | |||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | |||
| $ 0 ) | |||
| $ 0 ) | |||
| END IF | |||
| IF (RORDER) THEN | |||
| CALL CCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | |||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | |||
| $ 1 ) | |||
| $ 1 ) | |||
| END IF | |||
| GO TO 200 | |||
| * Test CGERC, 12, CGERU, 13. | |||
| @@ -2660,7 +2660,7 @@ | |||
| 50 CONTINUE | |||
| END IF | |||
| * | |||
| 60 CONTINUE | |||
| C 60 CONTINUE | |||
| LCERES = .TRUE. | |||
| GO TO 80 | |||
| 70 CONTINUE | |||
| @@ -329,13 +329,13 @@ | |||
| CALL CCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | |||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | |||
| $ 0 ) | |||
| $ 0 ) | |||
| END IF | |||
| IF (RORDER) THEN | |||
| CALL CCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | |||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | |||
| $ 1 ) | |||
| $ 1 ) | |||
| END IF | |||
| GO TO 190 | |||
| * Test CHERK, 06, CSYRK, 07. | |||
| @@ -357,13 +357,13 @@ | |||
| CALL CCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | |||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | |||
| $ 0 ) | |||
| $ 0 ) | |||
| END IF | |||
| IF (RORDER) THEN | |||
| CALL CCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | |||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | |||
| $ 1 ) | |||
| $ 1 ) | |||
| END IF | |||
| GO TO 190 | |||
| * | |||
| @@ -707,9 +707,9 @@ | |||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',', | |||
| $ 3( I3, ',' ), '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, | |||
| $ ',(', F4.1, ',', F4.1, '), C,', I3, ').' ) | |||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',', | |||
| C $ 3( I3, ',' ), '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, | |||
| C $ ',(', F4.1, ',', F4.1, '), C,', I3, ').' ) | |||
| 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1033,9 +1033,9 @@ | |||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, | |||
| $ ',', F4.1, '), C,', I3, ') .' ) | |||
| C 9995 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, | |||
| C $ ',', F4.1, '), C,', I3, ') .' ) | |||
| 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1385,9 +1385,9 @@ | |||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT(' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT(1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ') ', | |||
| $ ' .' ) | |||
| C 9995 FORMAT(1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ') ', | |||
| C $ ' .' ) | |||
| 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1768,12 +1768,12 @@ | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| $ ' .' ) | |||
| 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, ') , A,', I3, ',(', F4.1, ',', F4.1, | |||
| $ '), C,', I3, ') .' ) | |||
| C 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| C $ ' .' ) | |||
| C 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ '(', F4.1, ',', F4.1, ') , A,', I3, ',(', F4.1, ',', F4.1, | |||
| C $ '), C,', I3, ') .' ) | |||
| 9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -2221,12 +2221,12 @@ | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',', F4.1, | |||
| $ ', C,', I3, ') .' ) | |||
| 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, | |||
| $ ',', F4.1, '), C,', I3, ') .' ) | |||
| C 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',', F4.1, | |||
| C $ ', C,', I3, ') .' ) | |||
| C 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, | |||
| C $ ',', F4.1, '), C,', I3, ') .' ) | |||
| 9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -2702,7 +2702,7 @@ | |||
| 50 CONTINUE | |||
| END IF | |||
| * | |||
| 60 CONTINUE | |||
| C 60 CONTINUE | |||
| LCERES = .TRUE. | |||
| GO TO 80 | |||
| 70 CONTINUE | |||
| @@ -14,7 +14,7 @@ double F77_dasum(const int *N, double *X, const int *incX) | |||
| return cblas_dasum(*N, X, *incX); | |||
| } | |||
| void F77_daxpy(const int *N, const double *alpha, const double *X, | |||
| void F77_daxpy(const int *N, const double *alpha, OPENBLAS_CONST double *X, | |||
| const int *incX, double *Y, const int *incY) | |||
| { | |||
| cblas_daxpy(*N, *alpha, X, *incX, Y, *incY); | |||
| @@ -28,13 +28,13 @@ void F77_dcopy(const int *N, double *X, const int *incX, | |||
| return; | |||
| } | |||
| double F77_ddot(const int *N, const double *X, const int *incX, | |||
| const double *Y, const int *incY) | |||
| double F77_ddot(const int *N, OPENBLAS_CONST double *X, const int *incX, | |||
| OPENBLAS_CONST double *Y, const int *incY) | |||
| { | |||
| return cblas_ddot(*N, X, *incX, Y, *incY); | |||
| } | |||
| double F77_dnrm2(const int *N, const double *X, const int *incX) | |||
| double F77_dnrm2(const int *N, OPENBLAS_CONST double *X, const int *incX) | |||
| { | |||
| return cblas_dnrm2(*N, X, *incX); | |||
| } | |||
| @@ -72,12 +72,12 @@ double F77_dzasum(const int *N, void *X, const int *incX) | |||
| return cblas_dzasum(*N, X, *incX); | |||
| } | |||
| double F77_dznrm2(const int *N, const void *X, const int *incX) | |||
| double F77_dznrm2(const int *N, OPENBLAS_CONST void *X, const int *incX) | |||
| { | |||
| return cblas_dznrm2(*N, X, *incX); | |||
| } | |||
| int F77_idamax(const int *N, const double *X, const int *incX) | |||
| int F77_idamax(const int *N, OPENBLAS_CONST double *X, const int *incX) | |||
| { | |||
| if (*N < 1 || *incX < 1) return(0); | |||
| return (cblas_idamax(*N, X, *incX)+1); | |||
| @@ -211,11 +211,11 @@ | |||
| IF (ICASE.EQ.7) THEN | |||
| * .. DNRM2TEST .. | |||
| STEMP(1) = DTRUE1(NP1) | |||
| CALL STEST1(DNRM2TEST(N,SX,INCX),STEMP,STEMP,SFAC) | |||
| CALL STEST1(DNRM2TEST(N,SX,INCX),STEMP(1),STEMP,SFAC) | |||
| ELSE IF (ICASE.EQ.8) THEN | |||
| * .. DASUMTEST .. | |||
| STEMP(1) = DTRUE3(NP1) | |||
| CALL STEST1(DASUMTEST(N,SX,INCX),STEMP,STEMP,SFAC) | |||
| CALL STEST1(DASUMTEST(N,SX,INCX),STEMP(1),STEMP,SFAC) | |||
| ELSE IF (ICASE.EQ.9) THEN | |||
| * .. DSCALTEST .. | |||
| CALL DSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX) | |||
| @@ -345,13 +345,13 @@ | |||
| CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | |||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | |||
| $ 0 ) | |||
| $ 0 ) | |||
| END IF | |||
| IF (RORDER) THEN | |||
| CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | |||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | |||
| $ 1 ) | |||
| $ 1 ) | |||
| END IF | |||
| GO TO 200 | |||
| * Test DGER, 12. | |||
| @@ -797,9 +797,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', 4( I3, ',' ), F4.1, | |||
| $ ', A,', I3, ',',/ 10x,'X,', I2, ',', F4.1, ', Y,', | |||
| @@ -1004,7 +1004,7 @@ | |||
| $ REWIND NTRA | |||
| CALL CDSBMV( IORDER, UPLO, N, K, ALPHA, | |||
| $ AA, LDA, XX, INCX, BETA, YY, | |||
| $ INCY ) | |||
| $ INCY ) | |||
| ELSE IF( PACKED )THEN | |||
| IF( TRACE ) | |||
| $ WRITE( NTRA, FMT = 9995 )NC, SNAME, | |||
| @@ -1156,9 +1156,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', AP', | |||
| $ ', X,', I2, ',', F4.1, ', Y,', I2, ') .' ) | |||
| @@ -1191,7 +1191,7 @@ | |||
| * .. Scalar Arguments .. | |||
| DOUBLE PRECISION EPS, THRESH | |||
| INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA, | |||
| $ IORDER | |||
| $ IORDER | |||
| LOGICAL FATAL, REWI, TRACE | |||
| CHARACTER*12 SNAME | |||
| * .. Array Arguments .. | |||
| @@ -1216,7 +1216,7 @@ | |||
| EXTERNAL LDE, LDERES | |||
| * .. External Subroutines .. | |||
| EXTERNAL DMAKE, DMVCH, CDTBMV, CDTBSV, CDTPMV, | |||
| $ CDTPSV, CDTRMV, CDTRSV | |||
| $ CDTPSV, CDTRMV, CDTRSV | |||
| * .. Intrinsic Functions .. | |||
| INTRINSIC ABS, MAX | |||
| * .. Scalars in Common .. | |||
| @@ -1544,9 +1544,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', 3( A14,',' ),/ 10x, I3, ', AP, ', | |||
| $ 'X,', I2, ') .' ) | |||
| @@ -1579,7 +1579,7 @@ | |||
| * .. Scalar Arguments .. | |||
| DOUBLE PRECISION EPS, THRESH | |||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | |||
| $ IORDER | |||
| $ IORDER | |||
| LOGICAL FATAL, REWI, TRACE | |||
| CHARACTER*12 SNAME | |||
| * .. Array Arguments .. | |||
| @@ -1819,9 +1819,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', 2( I3, ',' ), F4.1, ', X,', I2, | |||
| @@ -1851,7 +1851,7 @@ | |||
| * .. Scalar Arguments .. | |||
| DOUBLE PRECISION EPS, THRESH | |||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | |||
| $ IORDER | |||
| $ IORDER | |||
| LOGICAL FATAL, REWI, TRACE | |||
| CHARACTER*12 SNAME | |||
| * .. Array Arguments .. | |||
| @@ -1973,7 +1973,7 @@ | |||
| IF( REWI ) | |||
| $ REWIND NTRA | |||
| CALL CDSYR( IORDER, UPLO, N, ALPHA, XX, INCX, | |||
| $ AA, LDA ) | |||
| $ AA, LDA ) | |||
| ELSE IF( PACKED )THEN | |||
| IF( TRACE ) | |||
| $ WRITE( NTRA, FMT = 9994 )NC, SNAME, CUPLO, N, | |||
| @@ -2113,9 +2113,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | |||
| @@ -2147,7 +2147,7 @@ | |||
| * .. Scalar Arguments .. | |||
| DOUBLE PRECISION EPS, THRESH | |||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | |||
| $ IORDER | |||
| $ IORDER | |||
| LOGICAL FATAL, REWI, TRACE | |||
| CHARACTER*12 SNAME | |||
| * .. Array Arguments .. | |||
| @@ -2445,9 +2445,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | |||
| @@ -2833,7 +2833,7 @@ | |||
| 50 CONTINUE | |||
| END IF | |||
| * | |||
| 60 CONTINUE | |||
| C 60 CONTINUE | |||
| LDERES = .TRUE. | |||
| GO TO 80 | |||
| 70 CONTINUE | |||
| @@ -56,7 +56,7 @@ | |||
| * .. Local Scalars .. | |||
| DOUBLE PRECISION EPS, ERR, THRESH | |||
| INTEGER I, ISNUM, J, N, NALF, NBET, NIDIM, NTRA, | |||
| $ LAYOUT | |||
| $ LAYOUT | |||
| LOGICAL FATAL, LTESTT, REWI, SAME, SFATAL, TRACE, | |||
| $ TSTERR, CORDER, RORDER | |||
| CHARACTER*1 TRANSA, TRANSB | |||
| @@ -78,7 +78,7 @@ | |||
| EXTERNAL DDIFF, LDE | |||
| * .. External Subroutines .. | |||
| EXTERNAL DCHK1, DCHK2, DCHK3, DCHK4, DCHK5, CD3CHKE, | |||
| $ DMMCH | |||
| $ DMMCH | |||
| * .. Intrinsic Functions .. | |||
| INTRINSIC MAX, MIN | |||
| * .. Scalars in Common .. | |||
| @@ -323,13 +323,13 @@ | |||
| CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | |||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | |||
| $ 0 ) | |||
| $ 0 ) | |||
| END IF | |||
| IF (RORDER) THEN | |||
| CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | |||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | |||
| $ 1 ) | |||
| $ 1 ) | |||
| END IF | |||
| GO TO 190 | |||
| * Test DSYRK, 05. | |||
| @@ -351,13 +351,13 @@ | |||
| CALL DCHK5( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | |||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | |||
| $ 0 ) | |||
| $ 0 ) | |||
| END IF | |||
| IF (RORDER) THEN | |||
| CALL DCHK5( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | |||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | |||
| $ 1 ) | |||
| $ 1 ) | |||
| END IF | |||
| GO TO 190 | |||
| * | |||
| @@ -588,7 +588,7 @@ | |||
| $ REWIND NTRA | |||
| CALL CDGEMM( IORDER, TRANSA, TRANSB, M, N, | |||
| $ K, ALPHA, AA, LDA, BB, LDB, | |||
| $ BETA, CC, LDC ) | |||
| $ BETA, CC, LDC ) | |||
| * | |||
| * Check if error-exit was taken incorrectly. | |||
| * | |||
| @@ -694,9 +694,9 @@ | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',', | |||
| $ 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ', | |||
| $ 'C,', I3, ').' ) | |||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',', | |||
| C $ 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ', | |||
| C $ 'C,', I3, ').' ) | |||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1007,9 +1007,9 @@ | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| $ ' .' ) | |||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| C $ ' .' ) | |||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1201,7 +1201,7 @@ | |||
| $ REWIND NTRA | |||
| CALL CDTRMM( IORDER, SIDE, UPLO, TRANSA, | |||
| $ DIAG, M, N, ALPHA, AA, LDA, | |||
| $ BB, LDB ) | |||
| $ BB, LDB ) | |||
| ELSE IF( SNAME( 10: 11 ).EQ.'sm' )THEN | |||
| IF( TRACE ) | |||
| $ CALL DPRCN3( NTRA, NC, SNAME, IORDER, | |||
| @@ -1211,7 +1211,7 @@ | |||
| $ REWIND NTRA | |||
| CALL CDTRSM( IORDER, SIDE, UPLO, TRANSA, | |||
| $ DIAG, M, N, ALPHA, AA, LDA, | |||
| $ BB, LDB ) | |||
| $ BB, LDB ) | |||
| END IF | |||
| * | |||
| * Check if error-exit was taken incorrectly. | |||
| @@ -1355,8 +1355,8 @@ | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ', B,', I3, ') .' ) | |||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ F4.1, ', A,', I3, ', B,', I3, ') .' ) | |||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1681,8 +1681,8 @@ | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' ) | |||
| C 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' ) | |||
| 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1726,7 +1726,7 @@ | |||
| SUBROUTINE DCHK5( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, | |||
| $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX, | |||
| $ AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | |||
| $ IORDER ) | |||
| $ IORDER ) | |||
| * | |||
| * Tests DSYR2K. | |||
| * | |||
| @@ -1888,7 +1888,7 @@ | |||
| $ REWIND NTRA | |||
| CALL CDSYR2K( IORDER, UPLO, TRANS, N, K, | |||
| $ ALPHA, AA, LDA, BB, LDB, BETA, | |||
| $ CC, LDC ) | |||
| $ CC, LDC ) | |||
| * | |||
| * Check if error-exit was taken incorrectly. | |||
| * | |||
| @@ -2037,9 +2037,9 @@ | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| $ ' .' ) | |||
| C 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| C $ ' .' ) | |||
| 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -2399,7 +2399,7 @@ | |||
| 50 CONTINUE | |||
| END IF | |||
| * | |||
| 60 CONTINUE | |||
| C 60 CONTINUE | |||
| LDERES = .TRUE. | |||
| GO TO 80 | |||
| 70 CONTINUE | |||
| @@ -14,7 +14,7 @@ float F77_sasum(blasint *N, float *X, blasint *incX) | |||
| return cblas_sasum(*N, X, *incX); | |||
| } | |||
| void F77_saxpy(blasint *N, const float *alpha, const float *X, | |||
| void F77_saxpy(blasint *N, const float *alpha, OPENBLAS_CONST float *X, | |||
| blasint *incX, float *Y, blasint *incY) | |||
| { | |||
| cblas_saxpy(*N, *alpha, X, *incX, Y, *incY); | |||
| @@ -26,25 +26,25 @@ float F77_scasum(blasint *N, float *X, blasint *incX) | |||
| return cblas_scasum(*N, X, *incX); | |||
| } | |||
| float F77_scnrm2(blasint *N, const float *X, blasint *incX) | |||
| float F77_scnrm2(blasint *N, OPENBLAS_CONST float *X, blasint *incX) | |||
| { | |||
| return cblas_scnrm2(*N, X, *incX); | |||
| } | |||
| void F77_scopy(blasint *N, const float *X, blasint *incX, | |||
| void F77_scopy(blasint *N, OPENBLAS_CONST float *X, blasint *incX, | |||
| float *Y, blasint *incY) | |||
| { | |||
| cblas_scopy(*N, X, *incX, Y, *incY); | |||
| return; | |||
| } | |||
| float F77_sdot(blasint *N, const float *X, blasint *incX, | |||
| const float *Y, blasint *incY) | |||
| float F77_sdot(blasint *N, OPENBLAS_CONST float *X, blasint *incX, | |||
| OPENBLAS_CONST float *Y, blasint *incY) | |||
| { | |||
| return cblas_sdot(*N, X, *incX, Y, *incY); | |||
| } | |||
| float F77_snrm2(blasint *N, const float *X, blasint *incX) | |||
| float F77_snrm2(blasint *N, OPENBLAS_CONST float *X, blasint *incX) | |||
| { | |||
| return cblas_snrm2(*N, X, *incX); | |||
| } | |||
| @@ -76,7 +76,7 @@ void F77_sswap( blasint *N, float *X, blasint *incX, | |||
| return; | |||
| } | |||
| int F77_isamax(blasint *N, const float *X, blasint *incX) | |||
| int F77_isamax(blasint *N, OPENBLAS_CONST float *X, blasint *incX) | |||
| { | |||
| if (*N < 1 || *incX < 1) return(0); | |||
| return (cblas_isamax(*N, X, *incX)+1); | |||
| @@ -211,11 +211,11 @@ | |||
| IF (ICASE.EQ.7) THEN | |||
| * .. SNRM2TEST .. | |||
| STEMP(1) = DTRUE1(NP1) | |||
| CALL STEST1(SNRM2TEST(N,SX,INCX),STEMP,STEMP,SFAC) | |||
| CALL STEST1(SNRM2TEST(N,SX,INCX),STEMP(1),STEMP,SFAC) | |||
| ELSE IF (ICASE.EQ.8) THEN | |||
| * .. SASUMTEST .. | |||
| STEMP(1) = DTRUE3(NP1) | |||
| CALL STEST1(SASUMTEST(N,SX,INCX),STEMP,STEMP,SFAC) | |||
| CALL STEST1(SASUMTEST(N,SX,INCX),STEMP(1),STEMP,SFAC) | |||
| ELSE IF (ICASE.EQ.9) THEN | |||
| * .. SSCALTEST .. | |||
| CALL SSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX) | |||
| @@ -345,13 +345,13 @@ | |||
| CALL SCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | |||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | |||
| $ 0 ) | |||
| $ 0 ) | |||
| END IF | |||
| IF (RORDER) THEN | |||
| CALL SCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | |||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | |||
| $ 1 ) | |||
| $ 1 ) | |||
| END IF | |||
| GO TO 200 | |||
| * Test SGER, 12. | |||
| @@ -797,9 +797,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', 4( I3, ',' ), F4.1, | |||
| $ ', A,', I3, ',',/ 10x, 'X,', I2, ',', F4.1, ', Y,', | |||
| @@ -1004,7 +1004,7 @@ | |||
| $ REWIND NTRA | |||
| CALL CSSBMV( IORDER, UPLO, N, K, ALPHA, | |||
| $ AA, LDA, XX, INCX, BETA, YY, | |||
| $ INCY ) | |||
| $ INCY ) | |||
| ELSE IF( PACKED )THEN | |||
| IF( TRACE ) | |||
| $ WRITE( NTRA, FMT = 9995 )NC, SNAME, | |||
| @@ -1156,9 +1156,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', AP', | |||
| $ ', X,', I2, ',', F4.1, ', Y,', I2, ') .' ) | |||
| @@ -1191,7 +1191,7 @@ | |||
| * .. Scalar Arguments .. | |||
| REAL EPS, THRESH | |||
| INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA, | |||
| $ IORDER | |||
| $ IORDER | |||
| LOGICAL FATAL, REWI, TRACE | |||
| CHARACTER*12 SNAME | |||
| * .. Array Arguments .. | |||
| @@ -1216,7 +1216,7 @@ | |||
| EXTERNAL LSE, LSERES | |||
| * .. External Subroutines .. | |||
| EXTERNAL SMAKE, SMVCH, CSTBMV, CSTBSV, CSTPMV, | |||
| $ CSTPSV, CSTRMV, CSTRSV | |||
| $ CSTPSV, CSTRMV, CSTRSV | |||
| * .. Intrinsic Functions .. | |||
| INTRINSIC ABS, MAX | |||
| * .. Scalars in Common .. | |||
| @@ -1544,9 +1544,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', 3( A14,',' ),/ 10x, I3, ', AP, ', | |||
| $ 'X,', I2, ') .' ) | |||
| @@ -1579,7 +1579,7 @@ | |||
| * .. Scalar Arguments .. | |||
| REAL EPS, THRESH | |||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | |||
| $ IORDER | |||
| $ IORDER | |||
| LOGICAL FATAL, REWI, TRACE | |||
| CHARACTER*12 SNAME | |||
| * .. Array Arguments .. | |||
| @@ -1819,9 +1819,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', 2( I3, ',' ), F4.1, ', X,', I2, | |||
| @@ -1851,7 +1851,7 @@ | |||
| * .. Scalar Arguments .. | |||
| REAL EPS, THRESH | |||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | |||
| $ IORDER | |||
| $ IORDER | |||
| LOGICAL FATAL, REWI, TRACE | |||
| CHARACTER*12 SNAME | |||
| * .. Array Arguments .. | |||
| @@ -1973,7 +1973,7 @@ | |||
| IF( REWI ) | |||
| $ REWIND NTRA | |||
| CALL CSSYR( IORDER, UPLO, N, ALPHA, XX, INCX, | |||
| $ AA, LDA ) | |||
| $ AA, LDA ) | |||
| ELSE IF( PACKED )THEN | |||
| IF( TRACE ) | |||
| $ WRITE( NTRA, FMT = 9994 )NC, SNAME, CUPLO, N, | |||
| @@ -2113,9 +2113,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | |||
| @@ -2147,7 +2147,7 @@ | |||
| * .. Scalar Arguments .. | |||
| REAL EPS, THRESH | |||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | |||
| $ IORDER | |||
| $ IORDER | |||
| LOGICAL FATAL, REWI, TRACE | |||
| CHARACTER*12 SNAME | |||
| * .. Array Arguments .. | |||
| @@ -2445,9 +2445,9 @@ | |||
| $ ' (', I6, ' CALL', 'S)' ) | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| $ ' - SUSPECT *******' ) | |||
| C 9997 FORMAT( ' ',A12, ' COMPLETED THE COMPUTATIONAL TESTS (', I6, ' C', | |||
| C $ 'ALLS)', /' ******* BUT WITH MAXIMUM TEST RATIO', F8.2, | |||
| C $ ' - SUSPECT *******' ) | |||
| 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | |||
| @@ -2833,7 +2833,7 @@ | |||
| 50 CONTINUE | |||
| END IF | |||
| * | |||
| 60 CONTINUE | |||
| C 60 CONTINUE | |||
| LSERES = .TRUE. | |||
| GO TO 80 | |||
| 70 CONTINUE | |||
| @@ -694,9 +694,9 @@ | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',', | |||
| $ 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ', | |||
| $ 'C,', I3, ').' ) | |||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',', | |||
| C $ 3( I3, ',' ), F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', ', | |||
| C $ 'C,', I3, ').' ) | |||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1011,9 +1011,9 @@ | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| $ ' .' ) | |||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| C $ ' .' ) | |||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1359,8 +1359,8 @@ | |||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ', B,', I3, ') .' ) | |||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ F4.1, ', A,', I3, ', B,', I3, ') .' ) | |||
| 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1686,8 +1686,8 @@ | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' ) | |||
| C 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') .' ) | |||
| 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -2041,9 +2041,9 @@ | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| $ ' .' ) | |||
| C 9994 FORMAT( 1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ F4.1, ', A,', I3, ', B,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| C $ ' .' ) | |||
| 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -2403,7 +2403,7 @@ | |||
| 50 CONTINUE | |||
| END IF | |||
| * | |||
| 60 CONTINUE | |||
| C 60 CONTINUE | |||
| LSERES = .TRUE. | |||
| GO TO 80 | |||
| 70 CONTINUE | |||
| @@ -131,7 +131,7 @@ void F77_xerbla(char *srname, void *vinfo) | |||
| int BLASFUNC(xerbla)(char *name, blasint *info, blasint length) { | |||
| F77_xerbla(name, info); | |||
| return 0; | |||
| }; | |||
| @@ -9,7 +9,7 @@ | |||
| #include "common.h" | |||
| #include "cblas_test.h" | |||
| void F77_zaxpy(const int *N, const void *alpha, void *X, | |||
| void F77_zaxpy(const int *N, OPENBLAS_CONST void *alpha, void *X, | |||
| const int *incX, void *Y, const int *incY) | |||
| { | |||
| cblas_zaxpy(*N, alpha, X, *incX, Y, *incY); | |||
| @@ -23,8 +23,8 @@ void F77_zcopy(const int *N, void *X, const int *incX, | |||
| return; | |||
| } | |||
| void F77_zdotc(const int *N, const void *X, const int *incX, | |||
| const void *Y, const int *incY,void *dotc) | |||
| void F77_zdotc(const int *N, OPENBLAS_CONST void *X, const int *incX, | |||
| OPENBLAS_CONST void *Y, const int *incY,void *dotc) | |||
| { | |||
| cblas_zdotc_sub(*N, X, *incX, Y, *incY, dotc); | |||
| return; | |||
| @@ -58,13 +58,13 @@ void F77_zswap( const int *N, void *X, const int *incX, | |||
| return; | |||
| } | |||
| int F77_izamax(const int *N, const void *X, const int *incX) | |||
| int F77_izamax(const int *N, OPENBLAS_CONST void *X, const int *incX) | |||
| { | |||
| if (*N < 1 || *incX < 1) return(0); | |||
| return(cblas_izamax(*N, X, *incX)+1); | |||
| } | |||
| double F77_dznrm2(const int *N, const void *X, const int *incX) | |||
| double F77_dznrm2(const int *N, OPENBLAS_CONST void *X, const int *incX) | |||
| { | |||
| return cblas_dznrm2(*N, X, *incX); | |||
| } | |||
| @@ -9,9 +9,9 @@ | |||
| #include "cblas_test.h" | |||
| void F77_zgemv(int *order, char *transp, int *m, int *n, | |||
| const void *alpha, | |||
| CBLAS_TEST_ZOMPLEX *a, int *lda, const void *x, int *incx, | |||
| const void *beta, void *y, int *incy) { | |||
| OPENBLAS_CONST void *alpha, | |||
| CBLAS_TEST_ZOMPLEX *a, int *lda, OPENBLAS_CONST void *x, int *incx, | |||
| OPENBLAS_CONST void *beta, void *y, int *incy) { | |||
| CBLAS_TEST_ZOMPLEX *A; | |||
| int i,j,LDA; | |||
| @@ -349,13 +349,13 @@ | |||
| CALL ZCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | |||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | |||
| $ 0 ) | |||
| $ 0 ) | |||
| END IF | |||
| IF (RORDER) THEN | |||
| CALL ZCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | |||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | |||
| $ 1 ) | |||
| $ 1 ) | |||
| END IF | |||
| GO TO 200 | |||
| * Test ZGERC, 12, ZGERU, 13. | |||
| @@ -330,13 +330,13 @@ | |||
| CALL ZCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | |||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | |||
| $ 0 ) | |||
| $ 0 ) | |||
| END IF | |||
| IF (RORDER) THEN | |||
| CALL ZCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | |||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | |||
| $ 1 ) | |||
| $ 1 ) | |||
| END IF | |||
| GO TO 190 | |||
| * Test ZHERK, 06, ZSYRK, 07. | |||
| @@ -358,13 +358,13 @@ | |||
| CALL ZCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | |||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | |||
| $ 0 ) | |||
| $ 0 ) | |||
| END IF | |||
| IF (RORDER) THEN | |||
| CALL ZCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | |||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | |||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | |||
| $ 1 ) | |||
| $ 1 ) | |||
| END IF | |||
| GO TO 190 | |||
| * | |||
| @@ -708,9 +708,9 @@ | |||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',', | |||
| $ 3( I3, ',' ), '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, | |||
| $ ',(', F4.1, ',', F4.1, '), C,', I3, ').' ) | |||
| C 9995 FORMAT( 1X, I6, ': ', A12,'(''', A1, ''',''', A1, ''',', | |||
| C $ 3( I3, ',' ), '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, | |||
| C $ ',(', F4.1, ',', F4.1, '), C,', I3, ').' ) | |||
| 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1034,9 +1034,9 @@ | |||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, | |||
| $ ',', F4.1, '), C,', I3, ') .' ) | |||
| C 9995 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, | |||
| C $ ',', F4.1, '), C,', I3, ') .' ) | |||
| 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1386,9 +1386,9 @@ | |||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT(' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT(1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ') ', | |||
| $ ' .' ) | |||
| C 9995 FORMAT(1X, I6, ': ', A12,'(', 4( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ') ', | |||
| C $ ' .' ) | |||
| 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -1769,12 +1769,12 @@ | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| $ ' .' ) | |||
| 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, ') , A,', I3, ',(', F4.1, ',', F4.1, | |||
| $ '), C,', I3, ') .' ) | |||
| C 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ F4.1, ', A,', I3, ',', F4.1, ', C,', I3, ') ', | |||
| C $ ' .' ) | |||
| C 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ '(', F4.1, ',', F4.1, ') , A,', I3, ',(', F4.1, ',', F4.1, | |||
| C $ '), C,', I3, ') .' ) | |||
| 9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -2222,12 +2222,12 @@ | |||
| $ 'ANGED INCORRECTLY *******' ) | |||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | |||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | |||
| 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',', F4.1, | |||
| $ ', C,', I3, ') .' ) | |||
| 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, | |||
| $ ',', F4.1, '), C,', I3, ') .' ) | |||
| C 9994 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',', F4.1, | |||
| C $ ', C,', I3, ') .' ) | |||
| C 9993 FORMAT(1X, I6, ': ', A12,'(', 2( '''', A1, ''',' ), 2( I3, ',' ), | |||
| C $ '(', F4.1, ',', F4.1, '), A,', I3, ', B,', I3, ',(', F4.1, | |||
| C $ ',', F4.1, '), C,', I3, ') .' ) | |||
| 9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | |||
| $ '******' ) | |||
| * | |||
| @@ -2706,7 +2706,7 @@ | |||
| 50 CONTINUE | |||
| END IF | |||
| * | |||
| 60 CONTINUE | |||
| C 60 CONTINUE | |||
| LZERES = .TRUE. | |||
| GO TO 80 | |||
| 70 CONTINUE | |||
| @@ -73,7 +73,7 @@ GenerateNamedObjects("zgbmv_k.c" "TRANS;CONJ;XCONJ" "gbmv_d" false "" "" "" 2) | |||
| # special defines for complex | |||
| foreach (float_type ${FLOAT_TYPES}) | |||
| if (SMP) | |||
| if (USE_THREAD) | |||
| GenerateNamedObjects("gemv_thread.c" "" "gemv_thread_n" false "" "" false ${float_type}) | |||
| GenerateNamedObjects("gemv_thread.c" "TRANSA" "gemv_thread_t" false "" "" false ${float_type}) | |||
| @@ -107,7 +107,7 @@ foreach (float_type ${FLOAT_TYPES}) | |||
| GenerateNamedObjects("z${ulvm_source}" "LOWER;HEMVREV" "${op_name}_M" false "" "" false ${float_type}) | |||
| endforeach() | |||
| if (SMP) | |||
| if (USE_THREAD) | |||
| GenerateNamedObjects("gemv_thread.c" "CONJ" "gemv_thread_r" false "" "" false ${float_type}) | |||
| GenerateNamedObjects("gemv_thread.c" "CONJ;TRANSA" "gemv_thread_c" false "" "" false ${float_type}) | |||
| @@ -186,7 +186,7 @@ foreach (float_type ${FLOAT_TYPES}) | |||
| GenerateCombinationObjects("${l_source}" "UNIT" "N" "TRANSA" 0 "${op_name}_TU" false ${float_type}) | |||
| endforeach () | |||
| if (SMP) | |||
| if (USE_THREAD) | |||
| GenerateNamedObjects("ger_thread.c" "" "" false "" "" false ${float_type}) | |||
| foreach(nu_smp_source ${NU_SMP_SOURCES}) | |||
| string(REGEX MATCH "[a-z]+_[a-z]+" op_name ${nu_smp_source}) | |||
| @@ -197,7 +197,7 @@ foreach (float_type ${FLOAT_TYPES}) | |||
| endif () | |||
| endforeach () | |||
| if (SMP) | |||
| if (USE_THREAD) | |||
| GenerateCombinationObjects("${UL_SMP_SOURCES}" "LOWER" "U" "" 2) | |||
| endif () | |||
| @@ -62,13 +62,13 @@ void CNAME(BLASLONG m, BLASLONG n, BLASLONG ku, BLASLONG kl, FLOAT alpha, | |||
| if (incy != 1) { | |||
| Y = bufferY; | |||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + M * sizeof(FLOAT) + 4095) & ~4095); | |||
| gemvbuffer = bufferX; | |||
| // gemvbuffer = bufferX; | |||
| COPY_K(M, y, incy, Y, 1); | |||
| } | |||
| if (incx != 1) { | |||
| X = bufferX; | |||
| gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + N * sizeof(FLOAT) + 4095) & ~4095); | |||
| // gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + N * sizeof(FLOAT) + 4095) & ~4095); | |||
| COPY_K(N, x, incx, X, 1); | |||
| } | |||
| @@ -96,7 +96,7 @@ static int gbmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F | |||
| COPY_K(args -> m, x, incx, buffer, 1); | |||
| x = buffer; | |||
| buffer += ((COMPSIZE * args -> m + 1023) & ~1023); | |||
| // buffer += ((COMPSIZE * args -> m + 1023) & ~1023); | |||
| } | |||
| #endif | |||
| @@ -230,10 +230,10 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG ku, BLASLONG kl, FLOAT *alpha, FLOAT | |||
| #ifndef TRANSA | |||
| range_m[num_cpu] = num_cpu * ((m + 15) & ~15); | |||
| if (range_m[num_cpu] > m) range_m[num_cpu] = m; | |||
| if (range_m[num_cpu] > m * num_cpu) range_m[num_cpu] = m * num_cpu; | |||
| #else | |||
| range_m[num_cpu] = num_cpu * ((n + 15) & ~15); | |||
| if (range_m[num_cpu] > n) range_m[num_cpu] = n; | |||
| if (range_m[num_cpu] > n * num_cpu) range_m[num_cpu] = n * num_cpu; | |||
| #endif | |||
| queue[num_cpu].mode = mode; | |||
| @@ -55,13 +55,13 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT alpha, | |||
| if (incy != 1) { | |||
| Y = bufferY; | |||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) + 4095) & ~4095); | |||
| sbmvbuffer = bufferX; | |||
| // sbmvbuffer = bufferX; | |||
| COPY_K(n, y, incy, Y, 1); | |||
| } | |||
| if (incx != 1) { | |||
| X = bufferX; | |||
| sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) + 4095) & ~4095); | |||
| // sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) + 4095) & ~4095); | |||
| COPY_K(n, x, incx, X, 1); | |||
| } | |||
| @@ -91,7 +91,7 @@ static int sbmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F | |||
| COPY_K(n, x, incx, buffer, 1); | |||
| x = buffer; | |||
| buffer += ((COMPSIZE * n + 1023) & ~1023); | |||
| // buffer += ((COMPSIZE * n + 1023) & ~1023); | |||
| } | |||
| SCAL_K(n, 0, 0, ZERO, | |||
| @@ -246,7 +246,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *alpha, FLOAT *a, BLASLONG lda, FLOAT *x | |||
| range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width; | |||
| range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > n) range_n[num_cpu] = n; | |||
| if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = sbmv_kernel; | |||
| @@ -286,7 +286,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *alpha, FLOAT *a, BLASLONG lda, FLOAT *x | |||
| range_m[num_cpu + 1] = range_m[num_cpu] + width; | |||
| range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > n) range_n[num_cpu] = n; | |||
| if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = sbmv_kernel; | |||
| @@ -318,7 +318,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *alpha, FLOAT *a, BLASLONG lda, FLOAT *x | |||
| range_m[num_cpu + 1] = range_m[num_cpu] + width; | |||
| range_n[num_cpu] = num_cpu * ((n + 15) & ~15); | |||
| if (range_n[num_cpu] > n) range_n[num_cpu] = n; | |||
| if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = sbmv_kernel; | |||
| @@ -53,13 +53,13 @@ int CNAME(BLASLONG m, FLOAT alpha, FLOAT *a, | |||
| if (incy != 1) { | |||
| Y = bufferY; | |||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) + 4095) & ~4095); | |||
| gemvbuffer = bufferX; | |||
| // gemvbuffer = bufferX; | |||
| COPY_K(m, y, incy, Y, 1); | |||
| } | |||
| if (incx != 1) { | |||
| X = bufferX; | |||
| gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) + 4095) & ~4095); | |||
| // gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) + 4095) & ~4095); | |||
| COPY_K(m, x, incx, X, 1); | |||
| } | |||
| @@ -246,7 +246,7 @@ int CNAME(BLASLONG m, FLOAT *alpha, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *y, | |||
| range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width; | |||
| range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > m) range_n[num_cpu] = m; | |||
| if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = spmv_kernel; | |||
| @@ -286,7 +286,7 @@ int CNAME(BLASLONG m, FLOAT *alpha, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *y, | |||
| range_m[num_cpu + 1] = range_m[num_cpu] + width; | |||
| range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > m) range_n[num_cpu] = m; | |||
| if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = spmv_kernel; | |||
| @@ -177,7 +177,7 @@ int CNAME(BLASLONG m, FLOAT *alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG i | |||
| range_m[num_cpu + 1] = range_m[num_cpu] + width; | |||
| range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > m) range_n[num_cpu] = m; | |||
| if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu; | |||
| queue[MAX_CPU_NUMBER - num_cpu - 1].mode = mode; | |||
| queue[MAX_CPU_NUMBER - num_cpu - 1].routine = symv_kernel; | |||
| @@ -226,7 +226,7 @@ int CNAME(BLASLONG m, FLOAT *alpha, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG i | |||
| range_m[num_cpu + 1] = range_m[num_cpu] + width; | |||
| range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > m) range_n[num_cpu] = m; | |||
| if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = symv_kernel; | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dp1 = 1.; | |||
| // const static FLOAT dp1 = 1.; | |||
| int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dp1 = 1.; | |||
| // const static FLOAT dp1 = 1.; | |||
| int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -107,7 +107,7 @@ static int trmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F | |||
| COPY_K(args -> n, x, incx, buffer, 1); | |||
| x = buffer; | |||
| buffer += ((args -> n * COMPSIZE + 1023) & ~1023); | |||
| // buffer += ((args -> n * COMPSIZE + 1023) & ~1023); | |||
| } | |||
| if (range_n) y += *range_n * COMPSIZE; | |||
| @@ -288,7 +288,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc | |||
| range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width; | |||
| range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > n) range_n[num_cpu] = n; | |||
| if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = trmv_kernel; | |||
| @@ -328,7 +328,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc | |||
| range_m[num_cpu + 1] = range_m[num_cpu] + width; | |||
| range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > n) range_n[num_cpu] = n; | |||
| if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = trmv_kernel; | |||
| @@ -358,7 +358,7 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *x, BLASLONG inc | |||
| range_m[num_cpu + 1] = range_m[num_cpu] + width; | |||
| range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > n) range_n[num_cpu] = n; | |||
| if (range_n[num_cpu] > n * num_cpu) range_n[num_cpu] = n * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = trmv_kernel; | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dp1 = 1.; | |||
| // const static FLOAT dp1 = 1.; | |||
| int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dp1 = 1.; | |||
| // const static FLOAT dp1 = 1.; | |||
| int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dp1 = 1.; | |||
| // const static FLOAT dp1 = 1.; | |||
| int CNAME(BLASLONG m, FLOAT *a, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dp1 = 1.; | |||
| // const static FLOAT dp1 = 1.; | |||
| int CNAME(BLASLONG m, FLOAT *a, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -112,7 +112,7 @@ static int tpmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F | |||
| #endif | |||
| x = buffer; | |||
| buffer += ((COMPSIZE * args -> m + 1023) & ~1023); | |||
| // buffer += ((COMPSIZE * args -> m + 1023) & ~1023); | |||
| } | |||
| #ifndef TRANS | |||
| @@ -234,11 +234,7 @@ static int tpmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F | |||
| return 0; | |||
| } | |||
| #ifndef COMPLEX | |||
| int CNAME(BLASLONG m, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *buffer, int nthreads){ | |||
| #else | |||
| int CNAME(BLASLONG m, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *buffer, int nthreads){ | |||
| #endif | |||
| blas_arg_t args; | |||
| blas_queue_t queue[MAX_CPU_NUMBER]; | |||
| @@ -307,7 +303,7 @@ int CNAME(BLASLONG m, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *buffer, int nthr | |||
| range_m[MAX_CPU_NUMBER - num_cpu - 1] = range_m[MAX_CPU_NUMBER - num_cpu] - width; | |||
| range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > m) range_n[num_cpu] = m; | |||
| if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = tpmv_kernel; | |||
| @@ -347,7 +343,7 @@ int CNAME(BLASLONG m, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *buffer, int nthr | |||
| range_m[num_cpu + 1] = range_m[num_cpu] + width; | |||
| range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16); | |||
| if (range_n[num_cpu] > m) range_n[num_cpu] = m; | |||
| if (range_n[num_cpu] > m * num_cpu) range_n[num_cpu] = m * num_cpu; | |||
| queue[num_cpu].mode = mode; | |||
| queue[num_cpu].routine = tpmv_kernel; | |||
| @@ -54,12 +54,16 @@ int CNAME(BLASLONG m, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, FLOAT *bu | |||
| COPY_K(m, b, incb, buffer, 1); | |||
| } | |||
| for (is = 0; is < m; is += DTB_ENTRIES){ | |||
| /*FIXME the GEMV unrolling performed here was found to be broken, see issue 1332 */ | |||
| /* Multiplying DTB size by 100 is just a quick-and-dirty hack to disable it for now[B */ | |||
| min_i = MIN(m - is, DTB_ENTRIES); | |||
| for (is = 0; is < m; is += DTB_ENTRIES * 100){ | |||
| min_i = MIN(m - is, DTB_ENTRIES * 100); | |||
| #ifndef TRANSA | |||
| if (is > 0){ | |||
| fprintf(stderr,"WARNING unrolling of the trmv_U loop may give wrong results\n"); | |||
| GEMV_N(is, min_i, 0, dp1, | |||
| a + is * lda, lda, | |||
| B + is, 1, | |||
| @@ -83,13 +83,13 @@ void CNAME(BLASLONG m, BLASLONG n, BLASLONG ku, BLASLONG kl, FLOAT alpha_r, FLOA | |||
| if (incy != 1) { | |||
| Y = bufferY; | |||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + M * sizeof(FLOAT) * 2 + 4095) & ~4095); | |||
| gemvbuffer = bufferX; | |||
| // gemvbuffer = bufferX; | |||
| COPY_K(M, y, incy, Y, 1); | |||
| } | |||
| if (incx != 1) { | |||
| X = bufferX; | |||
| gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + N * sizeof(FLOAT) * 2 + 4095) & ~4095); | |||
| // gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + N * sizeof(FLOAT) * 2 + 4095) & ~4095); | |||
| COPY_K(N, x, incx, X, 1); | |||
| } | |||
| @@ -61,13 +61,13 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT alpha_r, FLOAT alpha_i, | |||
| if (incy != 1) { | |||
| Y = bufferY; | |||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095); | |||
| sbmvbuffer = bufferX; | |||
| // sbmvbuffer = bufferX; | |||
| COPY_K(n, y, incy, Y, 1); | |||
| } | |||
| if (incx != 1) { | |||
| X = bufferX; | |||
| sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095); | |||
| // sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095); | |||
| COPY_K(n, x, incx, X, 1); | |||
| } | |||
| @@ -56,13 +56,13 @@ int CNAME(BLASLONG m, FLOAT alpha_r, FLOAT alpha_i, | |||
| if (incy != 1) { | |||
| Y = bufferY; | |||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) * 2 + 4095) & ~4095); | |||
| gemvbuffer = bufferX; | |||
| // gemvbuffer = bufferX; | |||
| COPY_K(m, y, incy, Y, 1); | |||
| } | |||
| if (incx != 1) { | |||
| X = bufferX; | |||
| gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) * 2 + 4095) & ~4095); | |||
| // gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) * 2 + 4095) & ~4095); | |||
| COPY_K(m, x, incx, X, 1); | |||
| } | |||
| @@ -60,13 +60,13 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT alpha_r, FLOAT alpha_i, | |||
| if (incy != 1) { | |||
| Y = bufferY; | |||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095); | |||
| sbmvbuffer = bufferX; | |||
| // sbmvbuffer = bufferX; | |||
| COPY_K(n, y, incy, Y, 1); | |||
| } | |||
| if (incx != 1) { | |||
| X = bufferX; | |||
| sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095); | |||
| // sbmvbuffer = (FLOAT *)(((BLASLONG)bufferX + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095); | |||
| COPY_K(n, x, incx, X, 1); | |||
| } | |||
| @@ -55,13 +55,13 @@ int CNAME(BLASLONG m, FLOAT alpha_r, FLOAT alpha_i, | |||
| if (incy != 1) { | |||
| Y = bufferY; | |||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) * 2 + 4095) & ~4095); | |||
| gemvbuffer = bufferX; | |||
| // gemvbuffer = bufferX; | |||
| COPY_K(m, y, incy, Y, 1); | |||
| } | |||
| if (incx != 1) { | |||
| X = bufferX; | |||
| gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) * 2 + 4095) & ~4095); | |||
| // gemvbuffer = (FLOAT *)(((BLASLONG)bufferX + m * sizeof(FLOAT) * 2 + 4095) & ~4095); | |||
| COPY_K(m, x, incx, X, 1); | |||
| } | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dp1 = 1.; | |||
| // const static FLOAT dp1 = 1.; | |||
| int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dp1 = 1.; | |||
| // const static FLOAT dp1 = 1.; | |||
| int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dp1 = 1.; | |||
| // const static FLOAT dp1 = 1.; | |||
| int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dp1 = 1.; | |||
| // const static FLOAT dp1 = 1.; | |||
| int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -40,7 +40,7 @@ | |||
| #include <ctype.h> | |||
| #include "common.h" | |||
| const static FLOAT dm1 = -1.; | |||
| // const static FLOAT dm1 = -1.; | |||
| int CNAME(BLASLONG m, FLOAT *a, FLOAT *b, BLASLONG incb, void *buffer){ | |||
| @@ -9,7 +9,7 @@ set(GEMM_COMPLEX_DEFINES RN CN RT CT NR TR RR CR NC TC RC CC) | |||
| foreach (GEMM_DEFINE ${GEMM_DEFINES}) | |||
| string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC) | |||
| GenerateNamedObjects("gemm.c" "${GEMM_DEFINE}" "gemm_${GEMM_DEFINE_LC}" 0) | |||
| if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3) | |||
| if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3) | |||
| GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm_thread_${GEMM_DEFINE_LC}" 0) | |||
| endif () | |||
| endforeach () | |||
| @@ -32,7 +32,7 @@ GenerateCombinationObjects("syrk_k.c" "LOWER;TRANS" "U;N" "" 1) | |||
| GenerateCombinationObjects("syr2k_k.c" "LOWER;TRANS" "U;N" "" 1) | |||
| GenerateCombinationObjects("syrk_kernel.c" "LOWER" "U" "" 2) | |||
| GenerateCombinationObjects("syr2k_kernel.c" "LOWER" "U" "" 2) | |||
| if (SMP) | |||
| if (USE_THREAD) | |||
| # N.B. these do NOT have a float type (e.g. DOUBLE) defined! | |||
| GenerateNamedObjects("gemm_thread_m.c;gemm_thread_n.c;gemm_thread_mn.c;gemm_thread_variable.c;syrk_thread.c" "" "" 0 "" "" 1) | |||
| @@ -71,7 +71,7 @@ foreach (float_type ${FLOAT_TYPES}) | |||
| GenerateNamedObjects("zher2k_k.c" "HER2K;LOWER" "her2k_LN" false "" "" false ${float_type}) | |||
| GenerateNamedObjects("zher2k_k.c" "HER2K;LOWER;TRANS;CONJ" "her2k_LC" false "" "" false ${float_type}) | |||
| if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3) | |||
| if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3) | |||
| #herk | |||
| GenerateCombinationObjects("zherk_k.c" "LOWER" "U" "HERK;THREADED_LEVEL3" 3 "herk_thread_N" false ${float_type}) | |||
| GenerateCombinationObjects("zherk_k.c" "LOWER" "U" "HERK;THREADED_LEVEL3;TRANS;CONJ" 3 "herk_thread_C" false ${float_type}) | |||
| @@ -93,7 +93,7 @@ foreach (float_type ${FLOAT_TYPES}) | |||
| if(USE_GEMM3M) | |||
| GenerateNamedObjects("gemm3m.c" "${gemm_define}" "gemm3m_${gemm_define_LC}" false "" "" false ${float_type}) | |||
| endif() | |||
| if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3) | |||
| if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3) | |||
| GenerateNamedObjects("gemm.c" "${gemm_define};THREADED_LEVEL3" "gemm_thread_${gemm_define_LC}" false "" "" false ${float_type}) | |||
| if(USE_GEMM3M) | |||
| GenerateNamedObjects("gemm3m.c" "${gemm_define};THREADED_LEVEL3" "gemm3m_thread_${gemm_define_LC}" false "" "" false ${float_type}) | |||
| @@ -106,7 +106,7 @@ foreach (float_type ${FLOAT_TYPES}) | |||
| foreach (GEMM_DEFINE ${GEMM_DEFINES}) | |||
| string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC) | |||
| GenerateNamedObjects("gemm3m.c" "${GEMM_DEFINE}" "gemm3m_${GEMM_DEFINE_LC}" false "" "" false ${float_type}) | |||
| if (SMP AND NOT USE_SIMPLE_THREADED_LEVEL3) | |||
| if (USE_THREAD AND NOT USE_SIMPLE_THREADED_LEVEL3) | |||
| GenerateNamedObjects("gemm3m.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm3m_thread_${GEMM_DEFINE_LC}" false "" "" false ${float_type}) | |||
| endif () | |||
| endforeach () | |||
| @@ -251,11 +251,11 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||
| if ((k == 0) || (alpha == NULL)) return 0; | |||
| #if !defined(XDOUBLE) || !defined(QUAD_PRECISION) | |||
| if ((alpha[0] == ZERO) | |||
| if ( alpha[0] == ZERO | |||
| #ifdef COMPLEX | |||
| && (alpha[1] == ZERO) | |||
| && alpha[1] == ZERO | |||
| #endif | |||
| ) return 0; | |||
| ) return 0; | |||
| #else | |||
| if (((alpha[0].x[0] | alpha[0].x[1] | |||
| #ifdef COMPLEX | |||
| @@ -293,7 +293,7 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||
| min_l = k - ls; | |||
| if (min_l >= GEMM_Q * 2) { | |||
| gemm_p = GEMM_P; | |||
| // gemm_p = GEMM_P; | |||
| min_l = GEMM_Q; | |||
| } else { | |||
| if (min_l > GEMM_Q) { | |||
| @@ -974,7 +974,7 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG | |||
| int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLOAT *sb, BLASLONG mypos){ | |||
| BLASLONG m = args -> m; | |||
| BLASLONG n = args -> n; | |||
| // BLASLONG n = args -> n; | |||
| BLASLONG nthreads = args -> nthreads; | |||
| BLASLONG divN, divT; | |||
| int mode; | |||
| @@ -985,13 +985,14 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO | |||
| m = m_to - m_from; | |||
| } | |||
| /* | |||
| if (range_n) { | |||
| BLASLONG n_from = *(((BLASLONG *)range_n) + 0); | |||
| BLASLONG n_to = *(((BLASLONG *)range_n) + 1); | |||
| n = n_to - n_from; | |||
| } | |||
| */ | |||
| if ((args -> m < nthreads * SWITCH_RATIO) || (args -> n < nthreads * SWITCH_RATIO)) { | |||
| GEMM3M_LOCAL(args, range_m, range_n, sa, sb, 0); | |||
| @@ -154,9 +154,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO | |||
| if ((k == 0) || (alpha == NULL)) return 0; | |||
| if ((alpha[0] == ZERO) | |||
| if (alpha[0] == ZERO | |||
| #ifdef COMPLEX | |||
| && (alpha[1] == ZERO) | |||
| && alpha[1] == ZERO | |||
| #endif | |||
| ) return 0; | |||
| @@ -158,9 +158,9 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO | |||
| if ((k == 0) || (alpha == NULL)) return 0; | |||
| if ((alpha[0] == ZERO) | |||
| if (alpha[0] == ZERO | |||
| #if defined(COMPLEX) && !defined(HERK) | |||
| && (alpha[1] == ZERO) | |||
| && alpha[1] == ZERO | |||
| #endif | |||
| ) return 0; | |||
| @@ -200,9 +200,9 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||
| if ((k == 0) || (alpha == NULL)) return 0; | |||
| if ((alpha[0] == ZERO) | |||
| if (alpha[0] == ZERO | |||
| #if defined(COMPLEX) && !defined(HERK) | |||
| && (alpha[1] == ZERO) | |||
| && alpha[1] == ZERO | |||
| #endif | |||
| ) return 0; | |||
| @@ -97,21 +97,21 @@ typedef struct { | |||
| #ifndef BETA_OPERATION | |||
| #ifndef COMPLEX | |||
| #define BETA_OPERATION(M_FROM, M_TO, N_FROM, N_TO, BETA, C, LDC) \ | |||
| GEMM_BETA((M_TO) - (M_FROM), (N_TO - N_FROM), 0, \ | |||
| BETA[0], NULL, 0, NULL, 0, \ | |||
| (FLOAT *)(C) + ((M_FROM) + (N_FROM) * (LDC)) * COMPSIZE, LDC) | |||
| #define BETA_OPERATION(M_FROM, M_TO, N_FROM, N_TO, BETA, C, LDC) \ | |||
| GEMM_BETA((M_TO) - (M_FROM), (N_TO - N_FROM), 0, \ | |||
| BETA[0], NULL, 0, NULL, 0, \ | |||
| (FLOAT *)(C) + ((M_FROM) + (N_FROM) * (LDC)) * COMPSIZE, LDC) | |||
| #else | |||
| #define BETA_OPERATION(M_FROM, M_TO, N_FROM, N_TO, BETA, C, LDC) \ | |||
| GEMM_BETA((M_TO) - (M_FROM), (N_TO - N_FROM), 0, \ | |||
| BETA[0], BETA[1], NULL, 0, NULL, 0, \ | |||
| (FLOAT *)(C) + ((M_FROM) + (N_FROM) * (LDC)) * COMPSIZE, LDC) | |||
| #define BETA_OPERATION(M_FROM, M_TO, N_FROM, N_TO, BETA, C, LDC) \ | |||
| GEMM_BETA((M_TO) - (M_FROM), (N_TO - N_FROM), 0, \ | |||
| BETA[0], BETA[1], NULL, 0, NULL, 0, \ | |||
| (FLOAT *)(C) + ((M_FROM) + (N_FROM) * (LDC)) * COMPSIZE, LDC) | |||
| #endif | |||
| #endif | |||
| #ifndef ICOPY_OPERATION | |||
| #if defined(NN) || defined(NT) || defined(NC) || defined(NR) || \ | |||
| defined(RN) || defined(RT) || defined(RC) || defined(RR) | |||
| defined(RN) || defined(RT) || defined(RC) || defined(RR) | |||
| #define ICOPY_OPERATION(M, N, A, LDA, X, Y, BUFFER) GEMM_ITCOPY(M, N, (FLOAT *)(A) + ((Y) + (X) * (LDA)) * COMPSIZE, LDA, BUFFER); | |||
| #else | |||
| #define ICOPY_OPERATION(M, N, A, LDA, X, Y, BUFFER) GEMM_INCOPY(M, N, (FLOAT *)(A) + ((X) + (Y) * (LDA)) * COMPSIZE, LDA, BUFFER); | |||
| @@ -120,7 +120,7 @@ typedef struct { | |||
| #ifndef OCOPY_OPERATION | |||
| #if defined(NN) || defined(TN) || defined(CN) || defined(RN) || \ | |||
| defined(NR) || defined(TR) || defined(CR) || defined(RR) | |||
| defined(NR) || defined(TR) || defined(CR) || defined(RR) | |||
| #define OCOPY_OPERATION(M, N, A, LDA, X, Y, BUFFER) GEMM_ONCOPY(M, N, (FLOAT *)(A) + ((X) + (Y) * (LDA)) * COMPSIZE, LDA, BUFFER); | |||
| #else | |||
| #define OCOPY_OPERATION(M, N, A, LDA, X, Y, BUFFER) GEMM_OTCOPY(M, N, (FLOAT *)(A) + ((Y) + (X) * (LDA)) * COMPSIZE, LDA, BUFFER); | |||
| @@ -144,36 +144,36 @@ typedef struct { | |||
| #ifndef KERNEL_OPERATION | |||
| #ifndef COMPLEX | |||
| #define KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, C, LDC, X, Y) \ | |||
| KERNEL_FUNC(M, N, K, ALPHA[0], SA, SB, (FLOAT *)(C) + ((X) + (Y) * LDC) * COMPSIZE, LDC) | |||
| #define KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, C, LDC, X, Y) \ | |||
| KERNEL_FUNC(M, N, K, ALPHA[0], SA, SB, (FLOAT *)(C) + ((X) + (Y) * LDC) * COMPSIZE, LDC) | |||
| #else | |||
| #define KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, C, LDC, X, Y) \ | |||
| KERNEL_FUNC(M, N, K, ALPHA[0], ALPHA[1], SA, SB, (FLOAT *)(C) + ((X) + (Y) * LDC) * COMPSIZE, LDC) | |||
| #define KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, C, LDC, X, Y) \ | |||
| KERNEL_FUNC(M, N, K, ALPHA[0], ALPHA[1], SA, SB, (FLOAT *)(C) + ((X) + (Y) * LDC) * COMPSIZE, LDC) | |||
| #endif | |||
| #endif | |||
| #ifndef FUSED_KERNEL_OPERATION | |||
| #if defined(NN) || defined(TN) || defined(CN) || defined(RN) || \ | |||
| defined(NR) || defined(TR) || defined(CR) || defined(RR) | |||
| defined(NR) || defined(TR) || defined(CR) || defined(RR) | |||
| #ifndef COMPLEX | |||
| #define FUSED_KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, B, LDB, C, LDC, I, J, L) \ | |||
| FUSED_GEMM_KERNEL_N(M, N, K, ALPHA[0], SA, SB, \ | |||
| (FLOAT *)(B) + ((L) + (J) * LDB) * COMPSIZE, LDB, (FLOAT *)(C) + ((I) + (J) * LDC) * COMPSIZE, LDC) | |||
| FUSED_GEMM_KERNEL_N(M, N, K, ALPHA[0], SA, SB, \ | |||
| (FLOAT *)(B) + ((L) + (J) * LDB) * COMPSIZE, LDB, (FLOAT *)(C) + ((I) + (J) * LDC) * COMPSIZE, LDC) | |||
| #else | |||
| #define FUSED_KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, B, LDB, C, LDC, I, J, L) \ | |||
| FUSED_GEMM_KERNEL_N(M, N, K, ALPHA[0], ALPHA[1], SA, SB, \ | |||
| (FLOAT *)(B) + ((L) + (J) * LDB) * COMPSIZE, LDB, (FLOAT *)(C) + ((I) + (J) * LDC) * COMPSIZE, LDC) | |||
| FUSED_GEMM_KERNEL_N(M, N, K, ALPHA[0], ALPHA[1], SA, SB, \ | |||
| (FLOAT *)(B) + ((L) + (J) * LDB) * COMPSIZE, LDB, (FLOAT *)(C) + ((I) + (J) * LDC) * COMPSIZE, LDC) | |||
| #endif | |||
| #else | |||
| #ifndef COMPLEX | |||
| #define FUSED_KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, B, LDB, C, LDC, I, J, L) \ | |||
| FUSED_GEMM_KERNEL_T(M, N, K, ALPHA[0], SA, SB, \ | |||
| (FLOAT *)(B) + ((J) + (L) * LDB) * COMPSIZE, LDB, (FLOAT *)(C) + ((I) + (J) * LDC) * COMPSIZE, LDC) | |||
| FUSED_GEMM_KERNEL_T(M, N, K, ALPHA[0], SA, SB, \ | |||
| (FLOAT *)(B) + ((J) + (L) * LDB) * COMPSIZE, LDB, (FLOAT *)(C) + ((I) + (J) * LDC) * COMPSIZE, LDC) | |||
| #else | |||
| #define FUSED_KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, B, LDB, C, LDC, I, J, L) \ | |||
| FUSED_GEMM_KERNEL_T(M, N, K, ALPHA[0], ALPHA[1], SA, SB, \ | |||
| (FLOAT *)(B) + ((J) + (L) * LDB) * COMPSIZE, LDB, (FLOAT *)(C) + ((I) + (J) * LDC) * COMPSIZE, LDC) | |||
| FUSED_GEMM_KERNEL_T(M, N, K, ALPHA[0], ALPHA[1], SA, SB, \ | |||
| (FLOAT *)(B) + ((J) + (L) * LDB) * COMPSIZE, LDB, (FLOAT *)(C) + ((I) + (J) * LDC) * COMPSIZE, LDC) | |||
| #endif | |||
| #endif | |||
| #endif | |||
| @@ -219,15 +219,17 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||
| FLOAT *buffer[DIVIDE_RATE]; | |||
| BLASLONG k, lda, ldb, ldc; | |||
| BLASLONG m_from, m_to, n_from, n_to, N_from, N_to; | |||
| BLASLONG m_from, m_to, n_from, n_to; | |||
| FLOAT *alpha, *beta; | |||
| FLOAT *a, *b, *c; | |||
| job_t *job = (job_t *)args -> common; | |||
| BLASLONG xxx, bufferside; | |||
| BLASLONG ls, min_l, jjs, min_jj; | |||
| BLASLONG is, min_i, div_n; | |||
| BLASLONG nthreads_m; | |||
| BLASLONG mypos_m, mypos_n; | |||
| BLASLONG is, js, ls, bufferside, jjs; | |||
| BLASLONG min_i, min_l, div_n, min_jj; | |||
| BLASLONG i, current; | |||
| BLASLONG l1stride; | |||
| @@ -259,74 +261,69 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||
| alpha = (FLOAT *)args -> alpha; | |||
| beta = (FLOAT *)args -> beta; | |||
| /* Initialize 2D CPU distribution */ | |||
| nthreads_m = args -> nthreads; | |||
| if (range_m) { | |||
| nthreads_m = range_m[-1]; | |||
| } | |||
| mypos_n = blas_quickdivide(mypos, nthreads_m); /* mypos_n = mypos / nthreads_m */ | |||
| mypos_m = mypos - mypos_n * nthreads_m; /* mypos_m = mypos % nthreads_m */ | |||
| /* Initialize m and n */ | |||
| m_from = 0; | |||
| m_to = M; | |||
| if (range_m) { | |||
| m_from = range_m[0]; | |||
| m_to = range_m[1]; | |||
| m_from = range_m[mypos_m + 0]; | |||
| m_to = range_m[mypos_m + 1]; | |||
| } | |||
| n_from = 0; | |||
| n_to = N; | |||
| N_from = 0; | |||
| N_to = N; | |||
| if (range_n) { | |||
| n_from = range_n[mypos + 0]; | |||
| n_to = range_n[mypos + 1]; | |||
| N_from = range_n[0]; | |||
| N_to = range_n[args -> nthreads]; | |||
| } | |||
| /* Multiply C by beta if needed */ | |||
| if (beta) { | |||
| #ifndef COMPLEX | |||
| if (beta[0] != ONE) | |||
| #else | |||
| if ((beta[0] != ONE) || (beta[1] != ZERO)) | |||
| #endif | |||
| BETA_OPERATION(m_from, m_to, N_from, N_to, beta, c, ldc); | |||
| BETA_OPERATION(m_from, m_to, range_n[mypos_n * nthreads_m], range_n[(mypos_n + 1) * nthreads_m], beta, c, ldc); | |||
| } | |||
| /* Return early if no more computation is needed */ | |||
| if ((k == 0) || (alpha == NULL)) return 0; | |||
| if ((alpha[0] == ZERO) | |||
| if (alpha[0] == ZERO | |||
| #ifdef COMPLEX | |||
| && (alpha[1] == ZERO) | |||
| && alpha[1] == ZERO | |||
| #endif | |||
| ) return 0; | |||
| #if 0 | |||
| fprintf(stderr, "Thread[%ld] m_from : %ld m_to : %ld n_from : %ld n_to : %ld N_from : %ld N_to : %ld\n", | |||
| mypos, m_from, m_to, n_from, n_to, N_from, N_to); | |||
| fprintf(stderr, "GEMM: P = %4ld Q = %4ld R = %4ld\n", (BLASLONG)GEMM_P, (BLASLONG)GEMM_Q, (BLASLONG)GEMM_R); | |||
| #endif | |||
| /* Initialize workspace for local region of B */ | |||
| div_n = (n_to - n_from + DIVIDE_RATE - 1) / DIVIDE_RATE; | |||
| buffer[0] = sb; | |||
| for (i = 1; i < DIVIDE_RATE; i++) { | |||
| buffer[i] = buffer[i - 1] + GEMM_Q * ((div_n + GEMM_UNROLL_N - 1)/GEMM_UNROLL_N) * GEMM_UNROLL_N * COMPSIZE; | |||
| } | |||
| /* Iterate through steps of k */ | |||
| for(ls = 0; ls < k; ls += min_l){ | |||
| /* Determine step size in k */ | |||
| min_l = k - ls; | |||
| if (min_l >= GEMM_Q * 2) { | |||
| min_l = GEMM_Q; | |||
| } else { | |||
| if (min_l > GEMM_Q) min_l = (min_l + 1) / 2; | |||
| } | |||
| /* Determine step size in m | |||
| * Note: We are currently on the first step in m | |||
| */ | |||
| l1stride = 1; | |||
| min_i = m_to - m_from; | |||
| if (min_i >= GEMM_P * 2) { | |||
| min_i = GEMM_P; | |||
| } else { | |||
| @@ -337,108 +334,106 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||
| } | |||
| } | |||
| /* Copy local region of A into workspace */ | |||
| START_RPCC(); | |||
| ICOPY_OPERATION(min_l, min_i, a, lda, ls, m_from, sa); | |||
| STOP_RPCC(copy_A); | |||
| /* Copy local region of B into workspace and apply kernel */ | |||
| div_n = (n_to - n_from + DIVIDE_RATE - 1) / DIVIDE_RATE; | |||
| for (js = n_from, bufferside = 0; js < n_to; js += div_n, bufferside ++) { | |||
| for (xxx = n_from, bufferside = 0; xxx < n_to; xxx += div_n, bufferside ++) { | |||
| /* Make sure if no one is using workspace */ | |||
| START_RPCC(); | |||
| /* Make sure if no one is using buffer */ | |||
| for (i = 0; i < args -> nthreads; i++) | |||
| while (job[mypos].working[i][CACHE_LINE_SIZE * bufferside]) {YIELDING;}; | |||
| STOP_RPCC(waiting1); | |||
| #if defined(FUSED_GEMM) && !defined(TIMING) | |||
| FUSED_KERNEL_OPERATION(min_i, MIN(n_to, xxx + div_n) - xxx, min_l, alpha, | |||
| sa, buffer[bufferside], b, ldb, c, ldc, m_from, xxx, ls); | |||
| /* Fused operation to copy region of B into workspace and apply kernel */ | |||
| FUSED_KERNEL_OPERATION(min_i, MIN(n_to, js + div_n) - js, min_l, alpha, | |||
| sa, buffer[bufferside], b, ldb, c, ldc, m_from, js, ls); | |||
| #else | |||
| for(jjs = xxx; jjs < MIN(n_to, xxx + div_n); jjs += min_jj){ | |||
| min_jj = MIN(n_to, xxx + div_n) - jjs; | |||
| /* Split local region of B into parts */ | |||
| for(jjs = js; jjs < MIN(n_to, js + div_n); jjs += min_jj){ | |||
| min_jj = MIN(n_to, js + div_n) - jjs; | |||
| if (min_jj >= 3*GEMM_UNROLL_N) min_jj = 3*GEMM_UNROLL_N; | |||
| else | |||
| if (min_jj >= 2*GEMM_UNROLL_N) min_jj = 2*GEMM_UNROLL_N; | |||
| else | |||
| if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N; | |||
| if (min_jj >= 2*GEMM_UNROLL_N) min_jj = 2*GEMM_UNROLL_N; | |||
| else | |||
| if (min_jj > GEMM_UNROLL_N) min_jj = GEMM_UNROLL_N; | |||
| /* Copy part of local region of B into workspace */ | |||
| START_RPCC(); | |||
| OCOPY_OPERATION(min_l, min_jj, b, ldb, ls, jjs, | |||
| buffer[bufferside] + min_l * (jjs - xxx) * COMPSIZE * l1stride); | |||
| buffer[bufferside] + min_l * (jjs - js) * COMPSIZE * l1stride); | |||
| STOP_RPCC(copy_B); | |||
| /* Apply kernel with local region of A and part of local region of B */ | |||
| START_RPCC(); | |||
| KERNEL_OPERATION(min_i, min_jj, min_l, alpha, | |||
| sa, buffer[bufferside] + min_l * (jjs - xxx) * COMPSIZE * l1stride, | |||
| sa, buffer[bufferside] + min_l * (jjs - js) * COMPSIZE * l1stride, | |||
| c, ldc, m_from, jjs); | |||
| STOP_RPCC(kernel); | |||
| #ifdef TIMING | |||
| ops += 2 * min_i * min_jj * min_l; | |||
| ops += 2 * min_i * min_jj * min_l; | |||
| #endif | |||
| } | |||
| #endif | |||
| for (i = 0; i < args -> nthreads; i++) job[mypos].working[i][CACHE_LINE_SIZE * bufferside] = (BLASLONG)buffer[bufferside]; | |||
| /* Set flag so other threads can access local region of B */ | |||
| for (i = mypos_n * nthreads_m; i < (mypos_n + 1) * nthreads_m; i++) | |||
| job[mypos].working[i][CACHE_LINE_SIZE * bufferside] = (BLASLONG)buffer[bufferside]; | |||
| WMB; | |||
| } | |||
| /* Get regions of B from other threads and apply kernel */ | |||
| current = mypos; | |||
| do { | |||
| /* This thread accesses regions of B from threads in the range | |||
| * [ mypos_n * nthreads_m, (mypos_n+1) * nthreads_m ) */ | |||
| current ++; | |||
| if (current >= args -> nthreads) current = 0; | |||
| if (current >= (mypos_n + 1) * nthreads_m) current = mypos_n * nthreads_m; | |||
| /* Split other region of B into parts */ | |||
| div_n = (range_n[current + 1] - range_n[current] + DIVIDE_RATE - 1) / DIVIDE_RATE; | |||
| for (js = range_n[current], bufferside = 0; js < range_n[current + 1]; js += div_n, bufferside ++) { | |||
| if (current != mypos) { | |||
| for (xxx = range_n[current], bufferside = 0; xxx < range_n[current + 1]; xxx += div_n, bufferside ++) { | |||
| if (current != mypos) { | |||
| /* Wait until other region of B is initialized */ | |||
| START_RPCC(); | |||
| /* thread has to wait */ | |||
| while(job[current].working[mypos][CACHE_LINE_SIZE * bufferside] == 0) {YIELDING;}; | |||
| STOP_RPCC(waiting2); | |||
| /* Apply kernel with local region of A and part of other region of B */ | |||
| START_RPCC(); | |||
| KERNEL_OPERATION(min_i, MIN(range_n[current + 1] - xxx, div_n), min_l, alpha, | |||
| KERNEL_OPERATION(min_i, MIN(range_n[current + 1] - js, div_n), min_l, alpha, | |||
| sa, (FLOAT *)job[current].working[mypos][CACHE_LINE_SIZE * bufferside], | |||
| c, ldc, m_from, xxx); | |||
| c, ldc, m_from, js); | |||
| STOP_RPCC(kernel); | |||
| STOP_RPCC(kernel); | |||
| #ifdef TIMING | |||
| ops += 2 * min_i * MIN(range_n[current + 1] - xxx, div_n) * min_l; | |||
| ops += 2 * min_i * MIN(range_n[current + 1] - js, div_n) * min_l; | |||
| #endif | |||
| } | |||
| /* Clear synchronization flag if this thread is done with other region of B */ | |||
| if (m_to - m_from == min_i) { | |||
| job[current].working[mypos][CACHE_LINE_SIZE * bufferside] &= 0; | |||
| } | |||
| } | |||
| } while (current != mypos); | |||
| /* Iterate through steps of m | |||
| * Note: First step has already been finished */ | |||
| for(is = m_from + min_i; is < m_to; is += min_i){ | |||
| min_i = m_to - is; | |||
| if (min_i >= GEMM_P * 2) { | |||
| min_i = GEMM_P; | |||
| } else | |||
| @@ -446,40 +441,41 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||
| min_i = (((min_i + 1) / 2 + GEMM_UNROLL_M - 1)/GEMM_UNROLL_M) * GEMM_UNROLL_M; | |||
| } | |||
| /* Copy local region of A into workspace */ | |||
| START_RPCC(); | |||
| ICOPY_OPERATION(min_l, min_i, a, lda, ls, is, sa); | |||
| STOP_RPCC(copy_A); | |||
| /* Get regions of B and apply kernel */ | |||
| current = mypos; | |||
| do { | |||
| /* Split region of B into parts and apply kernel */ | |||
| div_n = (range_n[current + 1] - range_n[current] + DIVIDE_RATE - 1) / DIVIDE_RATE; | |||
| for (js = range_n[current], bufferside = 0; js < range_n[current + 1]; js += div_n, bufferside ++) { | |||
| for (xxx = range_n[current], bufferside = 0; xxx < range_n[current + 1]; xxx += div_n, bufferside ++) { | |||
| /* Apply kernel with local region of A and part of region of B */ | |||
| START_RPCC(); | |||
| KERNEL_OPERATION(min_i, MIN(range_n[current + 1] - xxx, div_n), min_l, alpha, | |||
| KERNEL_OPERATION(min_i, MIN(range_n[current + 1] - js, div_n), min_l, alpha, | |||
| sa, (FLOAT *)job[current].working[mypos][CACHE_LINE_SIZE * bufferside], | |||
| c, ldc, is, xxx); | |||
| STOP_RPCC(kernel); | |||
| c, ldc, is, js); | |||
| STOP_RPCC(kernel); | |||
| #ifdef TIMING | |||
| ops += 2 * min_i * MIN(range_n[current + 1] - xxx, div_n) * min_l; | |||
| #endif | |||
| if (is + min_i >= m_to) { | |||
| /* Thread doesn't need this buffer any more */ | |||
| job[current].working[mypos][CACHE_LINE_SIZE * bufferside] &= 0; | |||
| WMB; | |||
| } | |||
| ops += 2 * min_i * MIN(range_n[current + 1] - js, div_n) * min_l; | |||
| #endif | |||
| /* Clear synchronization flag if this thread is done with region of B */ | |||
| if (is + min_i >= m_to) { | |||
| job[current].working[mypos][CACHE_LINE_SIZE * bufferside] &= 0; | |||
| WMB; | |||
| } | |||
| } | |||
| /* This thread accesses regions of B from threads in the range | |||
| * [ mypos_n * nthreads_m, (mypos_n+1) * nthreads_m ) */ | |||
| current ++; | |||
| if (current >= args -> nthreads) current = 0; | |||
| if (current >= (mypos_n + 1) * nthreads_m) current = mypos_n * nthreads_m; | |||
| } while (current != mypos); | |||
| @@ -487,14 +483,13 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||
| } | |||
| /* Wait until all other threads are done with local region of B */ | |||
| START_RPCC(); | |||
| for (i = 0; i < args -> nthreads; i++) { | |||
| for (xxx = 0; xxx < DIVIDE_RATE; xxx++) { | |||
| while (job[mypos].working[i][CACHE_LINE_SIZE * xxx] ) {YIELDING;}; | |||
| for (js = 0; js < DIVIDE_RATE; js++) { | |||
| while (job[mypos].working[i][CACHE_LINE_SIZE * js] ) {YIELDING;}; | |||
| } | |||
| } | |||
| STOP_RPCC(waiting3); | |||
| #ifdef TIMING | |||
| @@ -507,17 +502,6 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||
| (double)waiting2 /(double)total * 100., | |||
| (double)waiting3 /(double)total * 100., | |||
| (double)ops/(double)kernel / 4. * 100.); | |||
| #if 0 | |||
| fprintf(stderr, "GEMM [%2ld] Copy_A : %6.2ld Copy_B : %6.2ld Wait : %6.2ld\n", | |||
| mypos, copy_A, copy_B, waiting); | |||
| fprintf(stderr, "Waiting[%2ld] %6.2f %6.2f %6.2f\n", | |||
| mypos, | |||
| (double)waiting1/(double)waiting * 100., | |||
| (double)waiting2/(double)waiting * 100., | |||
| (double)waiting3/(double)waiting * 100.); | |||
| #endif | |||
| fprintf(stderr, "\n"); | |||
| #endif | |||
| @@ -525,7 +509,8 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||
| } | |||
| static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG | |||
| *range_n, FLOAT *sa, FLOAT *sb, BLASLONG mypos){ | |||
| *range_n, FLOAT *sa, FLOAT *sb, | |||
| BLASLONG nthreads_m, BLASLONG nthreads_n) { | |||
| blas_arg_t newarg; | |||
| @@ -537,17 +522,18 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG | |||
| blas_queue_t queue[MAX_CPU_NUMBER]; | |||
| BLASLONG range_M[MAX_CPU_NUMBER + 1]; | |||
| BLASLONG range_N[MAX_CPU_NUMBER + 1]; | |||
| BLASLONG num_cpu_m, num_cpu_n; | |||
| BLASLONG range_M_buffer[MAX_CPU_NUMBER + 2]; | |||
| BLASLONG range_N_buffer[MAX_CPU_NUMBER + 2]; | |||
| BLASLONG *range_M, *range_N; | |||
| BLASLONG num_parts; | |||
| BLASLONG nthreads = args -> nthreads; | |||
| BLASLONG width, i, j, k, js; | |||
| BLASLONG m, n, n_from, n_to; | |||
| int mode; | |||
| int mode; | |||
| /* Get execution mode */ | |||
| #ifndef COMPLEX | |||
| #ifdef XDOUBLE | |||
| mode = BLAS_XDOUBLE | BLAS_REAL | BLAS_NODE; | |||
| @@ -566,6 +552,16 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG | |||
| #endif | |||
| #endif | |||
| #ifdef USE_ALLOC_HEAP | |||
| /* Dynamically allocate workspace */ | |||
| job = (job_t*)malloc(MAX_CPU_NUMBER * sizeof(job_t)); | |||
| if(job==NULL){ | |||
| fprintf(stderr, "OpenBLAS: malloc failed in %s\n", __func__); | |||
| exit(1); | |||
| } | |||
| #endif | |||
| /* Initialize struct for arguments */ | |||
| newarg.m = args -> m; | |||
| newarg.n = args -> n; | |||
| newarg.k = args -> k; | |||
| @@ -578,23 +574,19 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG | |||
| newarg.alpha = args -> alpha; | |||
| newarg.beta = args -> beta; | |||
| newarg.nthreads = args -> nthreads; | |||
| #ifdef USE_ALLOC_HEAP | |||
| job = (job_t*)malloc(MAX_CPU_NUMBER * sizeof(job_t)); | |||
| if(job==NULL){ | |||
| fprintf(stderr, "OpenBLAS: malloc failed in %s\n", __func__); | |||
| exit(1); | |||
| } | |||
| #endif | |||
| newarg.common = (void *)job; | |||
| #ifdef PARAMTEST | |||
| newarg.gemm_p = args -> gemm_p; | |||
| newarg.gemm_q = args -> gemm_q; | |||
| newarg.gemm_r = args -> gemm_r; | |||
| newarg.gemm_p = args -> gemm_p; | |||
| newarg.gemm_q = args -> gemm_q; | |||
| newarg.gemm_r = args -> gemm_r; | |||
| #endif | |||
| /* Initialize partitions in m and n | |||
| * Note: The number of CPU partitions is stored in the -1 entry */ | |||
| range_M = &range_M_buffer[1]; | |||
| range_N = &range_N_buffer[1]; | |||
| range_M[-1] = nthreads_m; | |||
| range_N[-1] = nthreads_n; | |||
| if (!range_m) { | |||
| range_M[0] = 0; | |||
| m = args -> m; | |||
| @@ -603,34 +595,35 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG | |||
| m = range_m[1] - range_m[0]; | |||
| } | |||
| num_cpu_m = 0; | |||
| /* Partition m into nthreads_m regions */ | |||
| num_parts = 0; | |||
| while (m > 0){ | |||
| width = blas_quickdivide(m + nthreads - num_cpu_m - 1, nthreads - num_cpu_m); | |||
| width = blas_quickdivide(m + nthreads_m - num_parts - 1, nthreads_m - num_parts); | |||
| m -= width; | |||
| if (m < 0) width = width + m; | |||
| range_M[num_cpu_m + 1] = range_M[num_cpu_m] + width; | |||
| num_cpu_m ++; | |||
| range_M[num_parts + 1] = range_M[num_parts] + width; | |||
| num_parts ++; | |||
| } | |||
| for (i = num_parts; i < MAX_CPU_NUMBER; i++) { | |||
| range_M[i + 1] = range_M[num_parts]; | |||
| } | |||
| for (i = 0; i < num_cpu_m; i++) { | |||
| /* Initialize parameters for parallel execution */ | |||
| for (i = 0; i < nthreads; i++) { | |||
| queue[i].mode = mode; | |||
| queue[i].routine = inner_thread; | |||
| queue[i].args = &newarg; | |||
| queue[i].range_m = &range_M[i]; | |||
| queue[i].range_n = &range_N[0]; | |||
| queue[i].range_m = range_M; | |||
| queue[i].range_n = range_N; | |||
| queue[i].sa = NULL; | |||
| queue[i].sb = NULL; | |||
| queue[i].next = &queue[i + 1]; | |||
| } | |||
| queue[0].sa = sa; | |||
| queue[0].sb = sb; | |||
| queue[nthreads - 1].next = NULL; | |||
| /* Iterate through steps of n */ | |||
| if (!range_n) { | |||
| n_from = 0; | |||
| n_to = args -> n; | |||
| @@ -638,38 +631,38 @@ static int gemm_driver(blas_arg_t *args, BLASLONG *range_m, BLASLONG | |||
| n_from = range_n[0]; | |||
| n_to = range_n[1]; | |||
| } | |||
| for(js = n_from; js < n_to; js += GEMM_R * nthreads){ | |||
| n = n_to - js; | |||
| if (n > GEMM_R * nthreads) n = GEMM_R * nthreads; | |||
| /* Partition (a step of) n into nthreads regions */ | |||
| range_N[0] = js; | |||
| num_cpu_n = 0; | |||
| num_parts = 0; | |||
| while (n > 0){ | |||
| width = blas_quickdivide(n + nthreads - num_cpu_n - 1, nthreads - num_cpu_n); | |||
| width = blas_quickdivide(n + nthreads - num_parts - 1, nthreads - num_parts); | |||
| if (width < SWITCH_RATIO) { | |||
| width = SWITCH_RATIO; | |||
| } | |||
| n -= width; | |||
| if (n < 0) width = width + n; | |||
| range_N[num_cpu_n + 1] = range_N[num_cpu_n] + width; | |||
| num_cpu_n ++; | |||
| range_N[num_parts + 1] = range_N[num_parts] + width; | |||
| num_parts ++; | |||
| } | |||
| for (j = num_parts; j < MAX_CPU_NUMBER; j++) { | |||
| range_N[j + 1] = range_N[num_parts]; | |||
| } | |||
| for (j = 0; j < num_cpu_m; j++) { | |||
| for (i = 0; i < num_cpu_m; i++) { | |||
| /* Clear synchronization flags */ | |||
| for (i = 0; i < MAX_CPU_NUMBER; i++) { | |||
| for (j = 0; j < MAX_CPU_NUMBER; j++) { | |||
| for (k = 0; k < DIVIDE_RATE; k++) { | |||
| job[j].working[i][CACHE_LINE_SIZE * k] = 0; | |||
| job[i].working[j][CACHE_LINE_SIZE * k] = 0; | |||
| } | |||
| } | |||
| } | |||
| queue[num_cpu_m - 1].next = NULL; | |||
| exec_blas(num_cpu_m, queue); | |||
| /* Execute parallel computation */ | |||
| exec_blas(nthreads, queue); | |||
| } | |||
| #ifdef USE_ALLOC_HEAP | |||
| @@ -683,88 +676,42 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLO | |||
| BLASLONG m = args -> m; | |||
| BLASLONG n = args -> n; | |||
| BLASLONG nthreads = args -> nthreads; | |||
| BLASLONG divN, divT; | |||
| int mode; | |||
| if (nthreads == 1) { | |||
| GEMM_LOCAL(args, range_m, range_n, sa, sb, 0); | |||
| return 0; | |||
| } | |||
| BLASLONG nthreads_m, nthreads_n; | |||
| /* Get dimensions from index ranges if available */ | |||
| if (range_m) { | |||
| BLASLONG m_from = *(((BLASLONG *)range_m) + 0); | |||
| BLASLONG m_to = *(((BLASLONG *)range_m) + 1); | |||
| m = m_to - m_from; | |||
| m = range_m[1] - range_m[0]; | |||
| } | |||
| if (range_n) { | |||
| BLASLONG n_from = *(((BLASLONG *)range_n) + 0); | |||
| BLASLONG n_to = *(((BLASLONG *)range_n) + 1); | |||
| n = n_to - n_from; | |||
| n = range_n[1] - range_n[0]; | |||
| } | |||
| if ((m < nthreads * SWITCH_RATIO) || (n < nthreads * SWITCH_RATIO)) { | |||
| GEMM_LOCAL(args, range_m, range_n, sa, sb, 0); | |||
| return 0; | |||
| /* Partitions in m should have at least SWITCH_RATIO rows */ | |||
| if (m < 2 * SWITCH_RATIO) { | |||
| nthreads_m = 1; | |||
| } else { | |||
| nthreads_m = args -> nthreads; | |||
| while (m < nthreads_m * SWITCH_RATIO) { | |||
| nthreads_m = nthreads_m / 2; | |||
| } | |||
| } | |||
| divT = nthreads; | |||
| divN = 1; | |||
| #if 0 | |||
| while ((GEMM_P * divT > m * SWITCH_RATIO) && (divT > 1)) { | |||
| do { | |||
| divT --; | |||
| divN = 1; | |||
| while (divT * divN < nthreads) divN ++; | |||
| } while ((divT * divN != nthreads) && (divT > 1)); | |||
| /* Partitions in n should have at most SWITCH_RATIO * nthreads_m columns */ | |||
| if (n < SWITCH_RATIO * nthreads_m) { | |||
| nthreads_n = 1; | |||
| } else { | |||
| nthreads_n = (n + SWITCH_RATIO * nthreads_m - 1) / (SWITCH_RATIO * nthreads_m); | |||
| if (nthreads_m * nthreads_n > args -> nthreads) { | |||
| nthreads_n = blas_quickdivide(args -> nthreads, nthreads_m); | |||
| } | |||
| } | |||
| #endif | |||
| // fprintf(stderr, "divN = %4ld divT = %4ld\n", divN, divT); | |||
| args -> nthreads = divT; | |||
| if (divN == 1){ | |||
| gemm_driver(args, range_m, range_n, sa, sb, 0); | |||
| /* Execute serial or parallel computation */ | |||
| if (nthreads_m * nthreads_n <= 1) { | |||
| GEMM_LOCAL(args, range_m, range_n, sa, sb, 0); | |||
| } else { | |||
| #ifndef COMPLEX | |||
| #ifdef XDOUBLE | |||
| mode = BLAS_XDOUBLE | BLAS_REAL; | |||
| #elif defined(DOUBLE) | |||
| mode = BLAS_DOUBLE | BLAS_REAL; | |||
| #else | |||
| mode = BLAS_SINGLE | BLAS_REAL; | |||
| #endif | |||
| #else | |||
| #ifdef XDOUBLE | |||
| mode = BLAS_XDOUBLE | BLAS_COMPLEX; | |||
| #elif defined(DOUBLE) | |||
| mode = BLAS_DOUBLE | BLAS_COMPLEX; | |||
| #else | |||
| mode = BLAS_SINGLE | BLAS_COMPLEX; | |||
| #endif | |||
| #endif | |||
| #if defined(TN) || defined(TT) || defined(TR) || defined(TC) || \ | |||
| defined(CN) || defined(CT) || defined(CR) || defined(CC) | |||
| mode |= (BLAS_TRANSA_T); | |||
| #endif | |||
| #if defined(NT) || defined(TT) || defined(RT) || defined(CT) || \ | |||
| defined(NC) || defined(TC) || defined(RC) || defined(CC) | |||
| mode |= (BLAS_TRANSB_T); | |||
| #endif | |||
| #ifdef OS_WINDOWS | |||
| gemm_thread_n(mode, args, range_m, range_n, GEMM_LOCAL, sa, sb, divN); | |||
| #else | |||
| gemm_thread_n(mode, args, range_m, range_n, gemm_driver, sa, sb, divN); | |||
| #endif | |||
| args -> nthreads = nthreads_m * nthreads_n; | |||
| gemm_driver(args, range_m, range_n, sa, sb, nthreads_m, nthreads_n); | |||
| } | |||
| return 0; | |||
| @@ -7,7 +7,7 @@ else () | |||
| set(MEMORY memory.c) | |||
| endif () | |||
| if (SMP) | |||
| if (USE_THREAD) | |||
| if (USE_OPENMP) | |||
| set(BLAS_SERVER blas_server_omp.c) | |||
| @@ -26,7 +26,7 @@ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIA | |||
| 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 | |||
| kOR 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. | |||
| **********************************************************************************/ | |||
| @@ -78,6 +78,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| #include <sys/sysinfo.h> | |||
| #include <sys/syscall.h> | |||
| #include <sys/types.h> | |||
| #include <errno.h> | |||
| #include <sys/shm.h> | |||
| #include <fcntl.h> | |||
| #include <sched.h> | |||
| @@ -88,9 +90,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| #if defined(BIGNUMA) | |||
| // max number of nodes as defined in numa.h | |||
| // max cpus as defined in sched.h | |||
| // max cpus as defined in most sched.h | |||
| // cannot use CPU_SETSIZE directly as some | |||
| // Linux distributors set it to 4096 | |||
| #define MAX_NODES 128 | |||
| #define MAX_CPUS CPU_SETSIZE | |||
| #define MAX_CPUS 1024 | |||
| #else | |||
| #define MAX_NODES 16 | |||
| #define MAX_CPUS 256 | |||
| @@ -233,7 +237,7 @@ static inline void get_cpumap(int node, unsigned long * node_info) { | |||
| if(k!=0){ | |||
| name[k]='\0'; | |||
| affinity[count++] = strtoul(name, &dummy, 16); | |||
| k=0; | |||
| // k=0; | |||
| } | |||
| // 0-63bit -> node_info[0], 64-128bit -> node_info[1] .... | |||
| // revert the sequence | |||
| @@ -289,7 +293,7 @@ static inline void get_share(int cpu, int level, unsigned long * share) { | |||
| if(k!=0){ | |||
| name[k]='\0'; | |||
| affinity[count++] = strtoul(name, &dummy, 16); | |||
| k=0; | |||
| // k=0; | |||
| } | |||
| // 0-63bit -> node_info[0], 64-128bit -> node_info[1] .... | |||
| // revert the sequence | |||
| @@ -629,10 +633,12 @@ static inline int is_dead(int id) { | |||
| return shmctl(id, IPC_STAT, &ds); | |||
| } | |||
| static void open_shmem(void) { | |||
| static int open_shmem(void) { | |||
| int try = 0; | |||
| int err = 0; | |||
| do { | |||
| #if defined(BIGNUMA) | |||
| @@ -650,34 +656,53 @@ static void open_shmem(void) { | |||
| #endif | |||
| } | |||
| if (shmid == -1) err = errno; | |||
| try ++; | |||
| } while ((try < 10) && (shmid == -1)); | |||
| if (shmid == -1) { | |||
| fprintf(stderr, "GotoBLAS : Can't open shared memory. Terminated.\n"); | |||
| exit(1); | |||
| fprintf (stderr, "Obtaining shared memory segment failed in open_shmem: %s\n",strerror(err)); | |||
| fprintf (stderr, "Setting CPU affinity not possible without shared memory access.\n"); | |||
| return (1); | |||
| } | |||
| if (shmid != -1) common = (shm_t *)shmat(shmid, NULL, 0); | |||
| if (shmid != -1) { | |||
| if ( (common = shmat(shmid, NULL, 0)) == (void*)-1) { | |||
| perror ("Attaching shared memory segment failed in open_shmem"); | |||
| fprintf (stderr, "Setting CPU affinity not possible without shared memory access.\n"); | |||
| return (1); | |||
| } | |||
| } | |||
| #ifdef DEBUG | |||
| fprintf(stderr, "Shared Memory id = %x Address = %p\n", shmid, common); | |||
| #endif | |||
| return (0); | |||
| } | |||
| static void create_pshmem(void) { | |||
| static int create_pshmem(void) { | |||
| pshmid = shmget(IPC_PRIVATE, 4096, IPC_CREAT | 0666); | |||
| paddr = shmat(pshmid, NULL, 0); | |||
| shmctl(pshmid, IPC_RMID, 0); | |||
| if (pshmid == -1) { | |||
| perror ("Obtaining shared memory segment failed in create_pshmem"); | |||
| fprintf (stderr, "Setting CPU affinity not possible without shared memory access.\n"); | |||
| return(1); | |||
| } | |||
| if ( (paddr = shmat(pshmid, NULL, 0)) == (void*)-1) { | |||
| perror ("Attaching shared memory segment failed in create_pshmem"); | |||
| fprintf (stderr, "Setting CPU affinity not possible without shared memory access.\n"); | |||
| return (1); | |||
| } | |||
| if (shmctl(pshmid, IPC_RMID, 0) == -1) return (1); | |||
| #ifdef DEBUG | |||
| fprintf(stderr, "Private Shared Memory id = %x Address = %p\n", pshmid, paddr); | |||
| #endif | |||
| return(0); | |||
| } | |||
| static void local_cpu_map(void) { | |||
| @@ -805,17 +830,23 @@ void gotoblas_affinity_init(void) { | |||
| return; | |||
| } | |||
| create_pshmem(); | |||
| open_shmem(); | |||
| if (create_pshmem() != 0) { | |||
| disable_mapping = 1; | |||
| return; | |||
| } | |||
| if (open_shmem() != 0) { | |||
| disable_mapping = 1; | |||
| return; | |||
| } | |||
| while ((common -> lock) && (common -> magic != SH_MAGIC)) { | |||
| if (is_dead(common -> shmid)) { | |||
| common -> lock = 0; | |||
| common -> shmid = 0; | |||
| common -> magic = 0; | |||
| } else { | |||
| sched_yield(); | |||
| YIELDING; | |||
| } | |||
| } | |||
| @@ -872,6 +903,7 @@ void gotoblas_affinity_init(void) { | |||
| } | |||
| #else | |||
| common->num_procs = CPU_COUNT(sizeof(cpu_set_t),cpusetp); | |||
| } | |||
| #endif | |||
| #endif | |||
| @@ -177,7 +177,7 @@ int get_num_procs(void) { | |||
| cpu_set_t *cpusetp; | |||
| size_t size; | |||
| int ret; | |||
| int i,n; | |||
| // int i,n; | |||
| if (!nums) nums = sysconf(_SC_NPROCESSORS_CONF); | |||
| #if !defined(OS_LINUX) | |||
| @@ -348,7 +348,7 @@ int blas_get_cpu_number(void){ | |||
| max_num = get_num_procs(); | |||
| #endif | |||
| blas_goto_num = 0; | |||
| // blas_goto_num = 0; | |||
| #ifndef USE_OPENMP | |||
| blas_goto_num=openblas_num_threads_env(); | |||
| if (blas_goto_num < 0) blas_goto_num = 0; | |||
| @@ -360,7 +360,7 @@ int blas_get_cpu_number(void){ | |||
| #endif | |||
| blas_omp_num = 0; | |||
| // blas_omp_num = 0; | |||
| blas_omp_num=openblas_omp_num_threads_env(); | |||
| if (blas_omp_num < 0) blas_omp_num = 0; | |||
| @@ -51,7 +51,7 @@ endif | |||
| endif | |||
| endif | |||
| ifeq ($(NOFORTRAN), $(filter $(NOFORTRAN),1 2)) | |||
| ifneq (,$(filter 1 2,$(NOFORTRAN))) | |||
| FEXTRALIB = | |||
| endif | |||
| @@ -112,7 +112,7 @@ else | |||
| $(OBJCONV) @objconv.def ../$(LIBNAME) ../$(LIBNAME).osx.renamed | |||
| $(LIBDYNNAME) : ../$(LIBNAME).osx.renamed osx.def | |||
| endif | |||
| ifeq ($(NOFORTRAN), $(filter $(NOFORTRAN),1 2)) | |||
| ifneq (,$(filter 1 2,$(NOFORTRAN))) | |||
| #only build without Fortran | |||
| $(CC) $(CFLAGS) -all_load -headerpad_max_install_names -install_name "$(CURDIR)/../$(LIBDYNNAME)" -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB) | |||
| else | |||
| @@ -159,7 +159,7 @@ | |||
| ilaenv, ieeeck, lsamen, iparmq, | |||
| ilaprec, ilatrans, ilauplo, iladiag, | |||
| ilaver, slamch, slamc3, | |||
| # SCLAUX -- Auxiliary routines called from both REAL and COMPLEX. | |||
| # excluded: second_$(TIMER) | |||
| sbdsdc, | |||
| @@ -815,6 +815,28 @@ | |||
| sladiv1, | |||
| dladiv1, | |||
| iparam2stage, | |||
| # functions added for lapack-3.8.0 | |||
| ilaenv2stage, | |||
| ssysv_aa_2stage, | |||
| ssytrf_aa_2stage, | |||
| ssytrs_aa_2stage, | |||
| chesv_aa_2stage, | |||
| chetrf_aa_2stage, | |||
| chetrs_aa_2stage, | |||
| csysv_aa_2stage, | |||
| csytrf_aa_2stage, | |||
| csytrs_aa_2stage, | |||
| dsysv_aa_2stage, | |||
| dsytrf_aa_2stage, | |||
| dsytrs_aa_2stage, | |||
| zhesv_aa_2stage, | |||
| zhetrf_aa_2stage, | |||
| zhetrs_aa_2stage, | |||
| zsysv_aa_2stage, | |||
| zsytrf_aa_2stage, | |||
| zsytrs_aa_2stage | |||
| ); | |||
| @lapack_extendedprecision_objs = ( | |||
| @@ -3211,9 +3233,14 @@ | |||
| LAPACKE_zuncsd2by1_work, | |||
| ## new function from lapack-3.7.0 | |||
| LAPACKE_cgelq, | |||
| LAPACKE_cgelq_work, | |||
| LAPACKE_cgemlq, | |||
| LAPACKE_cgemlq_work, | |||
| LAPACKE_cgemqr, | |||
| LAPACKE_cgemqr_work, | |||
| LAPACKE_cgeqr, | |||
| LAPACKE_cgeqr_work, | |||
| LAPACKE_cgetsls, | |||
| LAPACKE_cgetsls_work, | |||
| LAPACKE_chbev_2stage, | |||
| @@ -3264,8 +3291,14 @@ | |||
| LAPACKE_csytrs_aa_work, | |||
| LAPACKE_csytrs_3, | |||
| LAPACKE_csytrs_3_work, | |||
| LAPACKE_dgelq, | |||
| LAPACKE_dgelq_work, | |||
| LAPACKE_dgemlq, | |||
| LAPACKE_dgemlq_work, | |||
| LAPACKE_dgemqr, | |||
| LAPACKE_dgemqr_work, | |||
| LAPACKE_dgeqr, | |||
| LAPACKE_dgeqr_work, | |||
| LAPACKE_dgetsls, | |||
| LAPACKE_dgetsls_work, | |||
| LAPACKE_dsbev_2stage, | |||
| @@ -3300,8 +3333,14 @@ | |||
| LAPACKE_dsytrs_aa_work, | |||
| LAPACKE_dsytrs_3, | |||
| LAPACKE_dsytrs_3_work, | |||
| LAPACKE_sgelq, | |||
| LAPACKE_sgelq_work, | |||
| LAPACKE_sgemlq, | |||
| LAPACKE_sgemlq_work, | |||
| LAPACKE_sgemqr, | |||
| LAPACKE_sgemqr_work, | |||
| LAPACKE_sgeqr, | |||
| LAPACKE_sgeqr_work, | |||
| LAPACKE_sgetsls, | |||
| LAPACKE_sgetsls_work, | |||
| LAPACKE_ssbev_2stage, | |||
| @@ -3336,8 +3375,14 @@ | |||
| LAPACKE_ssytrs_aa_work, | |||
| LAPACKE_ssytrs_3, | |||
| LAPACKE_ssytrs_3_work, | |||
| LAPACKE_zgelq, | |||
| LAPACKE_zgelq_work, | |||
| LAPACKE_zgemlq, | |||
| LAPACKE_zgemlq_work, | |||
| LAPACKE_zgemqr, | |||
| LAPACKE_zgemqr_work, | |||
| LAPACKE_zgeqr, | |||
| LAPACKE_zgeqr_work, | |||
| LAPACKE_zgetsls, | |||
| LAPACKE_zgetsls_work, | |||
| LAPACKE_zhbev_2stage, | |||
| @@ -3388,6 +3433,62 @@ | |||
| LAPACKE_zsytrs_aa_work, | |||
| LAPACKE_zsytrs_3, | |||
| LAPACKE_zsytrs_3_work, | |||
| ## new function from lapack-3.8.0 | |||
| LAPACKE_chesv_aa_2stage, | |||
| LAPACKE_chesv_aa_2stage_work, | |||
| LAPACKE_chetrf_aa_2stage, | |||
| LAPACKE_chetrf_aa_2stage_work, | |||
| LAPACKE_chetrs_aa_2stage, | |||
| LAPACKE_chetrs_aa_2stage_work, | |||
| LAPACKE_clacrm, | |||
| LAPACKE_clacrm_work, | |||
| LAPACKE_clarcm, | |||
| LAPACKE_clarcm_work, | |||
| LAPACKE_classq, | |||
| LAPACKE_classq_work, | |||
| LAPACKE_csysv_aa_2stage, | |||
| LAPACKE_csysv_aa_2stage_work, | |||
| LAPACKE_csytrf_aa_2stage, | |||
| LAPACKE_csytrf_aa_2stage_work, | |||
| LAPACKE_csytrs_aa_2stage, | |||
| LAPACKE_csytrs_aa_2stage_work, | |||
| LAPACKE_dlassq, | |||
| LAPACKE_dlassq_work, | |||
| LAPACKE_dsysv_aa_2stage, | |||
| LAPACKE_dsysv_aa_2stage_work, | |||
| LAPACKE_dsytrf_aa_2stage, | |||
| LAPACKE_dsytrf_aa_2stage_work, | |||
| LAPACKE_dsytrs_aa_2stage, | |||
| LAPACKE_dsytrs_aa_2stage_work, | |||
| LAPACKE_get_nancheck, | |||
| LAPACKE_set_nancheck, | |||
| LAPACKE_slassq, | |||
| LAPACKE_slassq_work, | |||
| LAPACKE_ssysv_aa_2stage, | |||
| LAPACKE_ssysv_aa_2stage_work, | |||
| LAPACKE_ssytrf_aa_2stage, | |||
| LAPACKE_ssytrf_aa_2stage_work, | |||
| LAPACKE_ssytrs_aa_2stage, | |||
| LAPACKE_ssytrs_aa_2stage_work, | |||
| LAPACKE_zhesv_aa_2stage, | |||
| LAPACKE_zhesv_aa_2stage_work, | |||
| LAPACKE_zhetrf_aa_2stage, | |||
| LAPACKE_zhetrf_aa_2stage_work, | |||
| LAPACKE_zhetrs_aa_2stage, | |||
| LAPACKE_zhetrs_aa_2stage_work, | |||
| LAPACKE_zlacrm, | |||
| LAPACKE_zlacrm_work, | |||
| LAPACKE_zlarcm, | |||
| LAPACKE_zlarcm_work, | |||
| LAPACKE_zlassq, | |||
| LAPACKE_zlassq_work, | |||
| LAPACKE_zsysv_aa_2stage, | |||
| LAPACKE_zsysv_aa_2stage_work, | |||
| LAPACKE_zsytrf_aa_2stage, | |||
| LAPACKE_zsytrf_aa_2stage_work, | |||
| LAPACKE_zsytrs_aa_2stage, | |||
| LAPACKE_zsytrs_aa_2stage_work, | |||
| ); | |||
| #These function may need 2 underscores. | |||
| @@ -3411,13 +3512,17 @@ | |||
| ); | |||
| use File::Spec; | |||
| use File::Basename; | |||
| my $dirname = File::Spec->catfile(dirname(dirname(File::Spec->rel2abs(__FILE__))), "lapack-netlib"); | |||
| if ($ARGV[8] == 1) { | |||
| #ONLY_CBLAS=1 | |||
| @underscore_objs = (@misc_underscore_objs); | |||
| } elsif ($ARGV[5] == 1) { | |||
| #NO_LAPACK=1 | |||
| @underscore_objs = (@blasobjs, @misc_underscore_objs); | |||
| } elsif (-d "../lapack-netlib") { | |||
| } elsif (-d $dirname) { | |||
| if ($ARGV[7] == 0) { | |||
| # NEED2UNDERSCORES=0 | |||
| # Don't need 2 underscores | |||
| @@ -134,6 +134,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| /* #define FORCE_I6400 */ | |||
| /* #define FORCE_P6600 */ | |||
| /* #define FORCE_P5600 */ | |||
| /* #define FORCE_I6500 */ | |||
| /* #define FORCE_ITANIUM2 */ | |||
| /* #define FORCE_SPARC */ | |||
| /* #define FORCE_SPARCV7 */ | |||
| @@ -765,6 +766,20 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||
| #else | |||
| #endif | |||
| #ifdef FORCE_I6500 | |||
| #define FORCE | |||
| #define ARCHITECTURE "MIPS" | |||
| #define SUBARCHITECTURE "I6500" | |||
| #define SUBDIRNAME "mips64" | |||
| #define ARCHCONFIG "-DI6500 " \ | |||
| "-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=32 " \ | |||
| "-DL2_SIZE=1048576 -DL2_LINESIZE=32 " \ | |||
| "-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 " | |||
| #define LIBNAME "i6500" | |||
| #define CORENAME "I6500" | |||
| #else | |||
| #endif | |||
| #ifdef FORCE_ITANIUM2 | |||
| #define FORCE | |||
| #define ARCHITECTURE "IA64" | |||
| @@ -68,8 +68,12 @@ FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){ | |||
| } | |||
| #else | |||
| #ifdef COMPLEX | |||
| FLOAT CNAME(blasint n, void *vx, blasint incx){ | |||
| FLOAT *x = (FLOAT*) vx; | |||
| #else | |||
| FLOAT CNAME(blasint n, FLOAT *x, blasint incx){ | |||
| #endif | |||
| FLOAT ret; | |||
| @@ -54,7 +54,13 @@ void NAME(blasint *N, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ | |||
| #else | |||
| #ifdef COMPLEX | |||
| void CNAME(blasint n, void *vx, blasint incx, void *vy, blasint incy){ | |||
| FLOAT *x = (FLOAT*) vx; | |||
| FLOAT *y = (FLOAT*) vy; | |||
| #else | |||
| void CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy){ | |||
| #endif | |||
| PRINT_DEBUG_CNAME; | |||
| @@ -220,17 +220,22 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANS | |||
| blasint m, blasint n, blasint k, | |||
| #ifndef COMPLEX | |||
| FLOAT alpha, | |||
| #else | |||
| FLOAT *alpha, | |||
| #endif | |||
| FLOAT *a, blasint lda, | |||
| FLOAT *b, blasint ldb, | |||
| #ifndef COMPLEX | |||
| FLOAT beta, | |||
| FLOAT *c, blasint ldc) { | |||
| #else | |||
| FLOAT *beta, | |||
| void *valpha, | |||
| void *va, blasint lda, | |||
| void *vb, blasint ldb, | |||
| void *vbeta, | |||
| void *vc, blasint ldc) { | |||
| FLOAT *alpha = (FLOAT*) valpha; | |||
| FLOAT *beta = (FLOAT*) vbeta; | |||
| FLOAT *a = (FLOAT*) va; | |||
| FLOAT *b = (FLOAT*) vb; | |||
| FLOAT *c = (FLOAT*) vc; | |||
| #endif | |||
| FLOAT *c, blasint ldc) { | |||
| blas_arg_t args; | |||
| int transa, transb; | |||
| @@ -146,8 +146,12 @@ blasint NAME(blasint *N, FLOAT *x, blasint *INCX){ | |||
| } | |||
| #else | |||
| #ifdef COMPLEX | |||
| CBLAS_INDEX CNAME(blasint n, void *vx, blasint incx){ | |||
| FLOAT *x = (FLOAT*) vx; | |||
| #else | |||
| CBLAS_INDEX CNAME(blasint n, FLOAT *x, blasint incx){ | |||
| #endif | |||
| CBLAS_INDEX ret; | |||
| @@ -69,7 +69,12 @@ FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){ | |||
| #else | |||
| #ifdef COMPLEX | |||
| FLOAT CNAME(blasint n, void *vx, blasint incx){ | |||
| FLOAT *x = (FLOAT*) vx; | |||
| #else | |||
| FLOAT CNAME(blasint n, FLOAT *x, blasint incx){ | |||
| #endif | |||
| FLOAT ret; | |||
| @@ -228,17 +228,22 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, | |||
| blasint m, blasint n, | |||
| #ifndef COMPLEX | |||
| FLOAT alpha, | |||
| #else | |||
| FLOAT *alpha, | |||
| #endif | |||
| FLOAT *a, blasint lda, | |||
| FLOAT *b, blasint ldb, | |||
| #ifndef COMPLEX | |||
| FLOAT beta, | |||
| FLOAT *c, blasint ldc) { | |||
| #else | |||
| FLOAT *beta, | |||
| void *valpha, | |||
| void *va, blasint lda, | |||
| void *vb, blasint ldb, | |||
| void *vbeta, | |||
| void *vc, blasint ldc) { | |||
| FLOAT *alpha = (FLOAT*) valpha; | |||
| FLOAT *beta = (FLOAT*) vbeta; | |||
| FLOAT *a = (FLOAT*) va; | |||
| FLOAT *b = (FLOAT*) vb; | |||
| FLOAT *c = (FLOAT*) vc; | |||
| #endif | |||
| FLOAT *c, blasint ldc) { | |||
| blas_arg_t args; | |||
| int side, uplo; | |||
| @@ -185,17 +185,34 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr | |||
| blasint n, blasint k, | |||
| #ifndef COMPLEX | |||
| FLOAT alpha, | |||
| #else | |||
| FLOAT *alpha, | |||
| #endif | |||
| FLOAT *a, blasint lda, | |||
| FLOAT *b, blasint ldb, | |||
| #else | |||
| void *valpha, | |||
| void *va, blasint lda, | |||
| void *vb, blasint ldb, | |||
| #endif | |||
| #if !defined(COMPLEX) || defined(HEMM) | |||
| FLOAT beta, | |||
| #else | |||
| FLOAT *beta, | |||
| void *vbeta, | |||
| #endif | |||
| #ifndef COMPLEX | |||
| FLOAT *c, | |||
| #else | |||
| void *vc, | |||
| #endif | |||
| blasint ldc) { | |||
| #ifdef COMPLEX | |||
| FLOAT* alpha = (FLOAT*) valpha; | |||
| #if !defined(HEMM) | |||
| FLOAT* beta = (FLOAT*) vbeta; | |||
| #endif | |||
| FLOAT* a = (FLOAT*) va; | |||
| FLOAT* b = (FLOAT*) vb; | |||
| FLOAT* c = (FLOAT*) vc; | |||
| #endif | |||
| FLOAT *c, blasint ldc) { | |||
| blas_arg_t args; | |||
| int uplo, trans; | |||
| @@ -101,6 +101,7 @@ void NAME(char *UPLO, char *TRANS, | |||
| FLOAT *sa, *sb; | |||
| #ifdef SMP | |||
| #ifdef USE_SIMPLE_THREADED_LEVEL3 | |||
| #ifndef COMPLEX | |||
| #ifdef XDOUBLE | |||
| int mode = BLAS_XDOUBLE | BLAS_REAL; | |||
| @@ -118,6 +119,7 @@ void NAME(char *UPLO, char *TRANS, | |||
| int mode = BLAS_SINGLE | BLAS_COMPLEX; | |||
| #endif | |||
| #endif | |||
| #endif | |||
| #endif | |||
| blasint info; | |||
| @@ -188,15 +190,32 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr | |||
| #if !defined(COMPLEX) || defined(HEMM) | |||
| FLOAT alpha, | |||
| #else | |||
| FLOAT *alpha, | |||
| void *valpha, | |||
| #endif | |||
| #if !defined(COMPLEX) | |||
| FLOAT *a, blasint lda, | |||
| #else | |||
| void *va, blasint lda, | |||
| #endif | |||
| #if !defined(COMPLEX) || defined(HEMM) | |||
| FLOAT beta, | |||
| #else | |||
| FLOAT *beta, | |||
| void *vbeta, | |||
| #endif | |||
| #if !defined(COMPLEX) | |||
| FLOAT *c, blasint ldc) { | |||
| #else | |||
| void *vc, blasint ldc) { | |||
| #endif | |||
| #ifdef COMPLEX | |||
| #if !defined(HEMM) | |||
| FLOAT* alpha = (FLOAT*) valpha; | |||
| FLOAT* beta = (FLOAT*) vbeta; | |||
| #endif | |||
| FLOAT* a = (FLOAT*) va; | |||
| FLOAT* c = (FLOAT*) vc; | |||
| #endif | |||
| blas_arg_t args; | |||
| int uplo, trans; | |||
| @@ -206,6 +225,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr | |||
| FLOAT *sa, *sb; | |||
| #ifdef SMP | |||
| #ifdef USE_SIMPLE_THREADED_LEVEL3 | |||
| #ifndef COMPLEX | |||
| #ifdef XDOUBLE | |||
| int mode = BLAS_XDOUBLE | BLAS_REAL; | |||
| @@ -223,6 +243,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr | |||
| int mode = BLAS_SINGLE | BLAS_COMPLEX; | |||
| #endif | |||
| #endif | |||
| #endif | |||
| #endif | |||
| PRINT_DEBUG_CNAME; | |||
| @@ -323,13 +344,14 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr | |||
| sb = (FLOAT *)(((BLASLONG)sa + ((GEMM_P * GEMM_Q * COMPSIZE * SIZE + GEMM_ALIGN) & ~GEMM_ALIGN)) + GEMM_OFFSET_B); | |||
| #ifdef SMP | |||
| #ifdef USE_SIMPLE_THREADED_LEVEL3 | |||
| if (!trans){ | |||
| mode |= (BLAS_TRANSA_N | BLAS_TRANSB_T); | |||
| } else { | |||
| mode |= (BLAS_TRANSA_T | BLAS_TRANSB_N); | |||
| } | |||
| mode |= (uplo << BLAS_UPLO_SHIFT); | |||
| #endif | |||
| args.common = NULL; | |||
| args.nthreads = num_cpu_avail(3); | |||
| @@ -135,10 +135,17 @@ void NAME(char *UPLO, char *TRANS, char *DIAG, | |||
| } | |||
| #else | |||
| #ifndef COMPLEX | |||
| void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, | |||
| enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, | |||
| blasint n, FLOAT *a, FLOAT *x, blasint incx) { | |||
| #else | |||
| void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, | |||
| enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, | |||
| blasint n, void *va, void *vx, blasint incx) { | |||
| FLOAT *a = (FLOAT*) va; | |||
| FLOAT *x = (FLOAT*) vx; | |||
| #endif | |||
| int trans, uplo, unit; | |||
| blasint info; | |||
| @@ -218,8 +218,11 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, | |||
| buffer = (FLOAT *)blas_memory_alloc(1); | |||
| #ifdef SMP | |||
| nthreads = num_cpu_avail(2); | |||
| /* nthreads = num_cpu_avail(2); | |||
| FIXME trmv_thread was found to be broken, see issue 1332 */ | |||
| nthreads = 1; | |||
| if (nthreads == 1) { | |||
| #endif | |||
| @@ -210,11 +210,16 @@ void CNAME(enum CBLAS_ORDER order, | |||
| blasint m, blasint n, | |||
| #ifndef COMPLEX | |||
| FLOAT alpha, | |||
| #else | |||
| FLOAT *alpha, | |||
| #endif | |||
| FLOAT *a, blasint lda, | |||
| FLOAT *b, blasint ldb) { | |||
| #else | |||
| void *valpha, | |||
| void *va, blasint lda, | |||
| void *vb, blasint ldb) { | |||
| FLOAT *alpha = (FLOAT*) valpha; | |||
| FLOAT *a = (FLOAT*) va; | |||
| FLOAT *b = (FLOAT*) vb; | |||
| #endif | |||
| blas_arg_t args; | |||
| int side, uplo, trans, unit; | |||
| @@ -48,8 +48,12 @@ void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *BETA, FLOAT | |||
| #else | |||
| void CNAME(blasint n, FLOAT *ALPHA, FLOAT *x, blasint incx, FLOAT *BETA, FLOAT *y, blasint incy) | |||
| void CNAME(blasint n, void *VALPHA, void *vx, blasint incx, void *VBETA, void *vy, blasint incy) | |||
| { | |||
| FLOAT* ALPHA = (FLOAT*) VALPHA; | |||
| FLOAT* BETA = (FLOAT*) VBETA; | |||
| FLOAT* x = (FLOAT*) vx; | |||
| FLOAT* y = (FLOAT*) vy; | |||
| #endif | |||
| @@ -51,9 +51,14 @@ void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *y, blasint * | |||
| blasint incy = *INCY; | |||
| #else | |||
| #ifdef COMPLEX | |||
| void CNAME(blasint n, void *VALPHA, void *vx, blasint incx, void *vy, blasint incy){ | |||
| FLOAT *ALPHA = (FLOAT*) VALPHA; | |||
| FLOAT *x = (FLOAT*) vx; | |||
| FLOAT *y = (FLOAT*) vy; | |||
| #else | |||
| void CNAME(blasint n, FLOAT *ALPHA, FLOAT *x, blasint incx, FLOAT *y, blasint incy){ | |||
| #endif | |||
| #endif | |||
| FLOAT alpha_r = *(ALPHA + 0); | |||
| @@ -148,13 +148,16 @@ OPENBLAS_COMPLEX_FLOAT NAME( blasint *N, FLOAT *x, blasin | |||
| #else | |||
| #ifdef FORCE_USE_STACK | |||
| void CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy, OPENBLAS_COMPLEX_FLOAT *result){ | |||
| void CNAME(blasint n, void *vx, blasint incx, void *vy, blasint incy, void* vresult){ | |||
| OPENBLAS_COMPLEX_FLOAT *result= (OPENBLAS_COMPLEX_FLOAT*)vresult; | |||
| #else | |||
| OPENBLAS_COMPLEX_FLOAT CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy){ | |||
| OPENBLAS_COMPLEX_FLOAT CNAME(blasint n, void *vx, blasint incx, void *vy, blasint incy){ | |||
| OPENBLAS_COMPLEX_FLOAT ret; | |||
| OPENBLAS_COMPLEX_FLOAT zero=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0); | |||
| #endif | |||
| FLOAT *x = (FLOAT*) vx; | |||
| FLOAT *y = (FLOAT*) vy; | |||
| PRINT_DEBUG_CNAME; | |||
| @@ -149,11 +149,17 @@ void CNAME(enum CBLAS_ORDER order, | |||
| enum CBLAS_TRANSPOSE TransA, | |||
| blasint m, blasint n, | |||
| blasint ku, blasint kl, | |||
| FLOAT *ALPHA, | |||
| FLOAT *a, blasint lda, | |||
| FLOAT *x, blasint incx, | |||
| FLOAT *BETA, | |||
| FLOAT *y, blasint incy){ | |||
| void *VALPHA, | |||
| void *va, blasint lda, | |||
| void *vx, blasint incx, | |||
| void *VBETA, | |||
| void *vy, blasint incy){ | |||
| FLOAT* ALPHA = (FLOAT*) VALPHA; | |||
| FLOAT* BETA = (FLOAT*) VBETA; | |||
| FLOAT* a = (FLOAT*) va; | |||
| FLOAT* x = (FLOAT*) vx; | |||
| FLOAT* y = (FLOAT*) vy; | |||
| FLOAT alpha_r = ALPHA[0]; | |||
| FLOAT alpha_i = ALPHA[1]; | |||
| @@ -134,12 +134,17 @@ void NAME(char *TRANS, blasint *M, blasint *N, | |||
| void CNAME(enum CBLAS_ORDER order, | |||
| enum CBLAS_TRANSPOSE TransA, | |||
| blasint m, blasint n, | |||
| FLOAT *ALPHA, | |||
| FLOAT *a, blasint lda, | |||
| FLOAT *x, blasint incx, | |||
| FLOAT *BETA, | |||
| FLOAT *y, blasint incy){ | |||
| void *VALPHA, | |||
| void *va, blasint lda, | |||
| void *vx, blasint incx, | |||
| void *VBETA, | |||
| void *vy, blasint incy){ | |||
| FLOAT *ALPHA = (FLOAT*) VALPHA; | |||
| FLOAT *a = (FLOAT*) va; | |||
| FLOAT *x = (FLOAT*) vx; | |||
| FLOAT *BETA = (FLOAT*) VBETA; | |||
| FLOAT *y = (FLOAT*) vy; | |||
| FLOAT *buffer; | |||
| blasint lenx, leny; | |||
| int trans, buffer_size; | |||
| @@ -141,10 +141,15 @@ void NAME(blasint *M, blasint *N, FLOAT *Alpha, | |||
| void CNAME(enum CBLAS_ORDER order, | |||
| blasint m, blasint n, | |||
| FLOAT *Alpha, | |||
| FLOAT *x, blasint incx, | |||
| FLOAT *y, blasint incy, | |||
| FLOAT *a, blasint lda) { | |||
| void *VAlpha, | |||
| void *vx, blasint incx, | |||
| void *vy, blasint incy, | |||
| void *va, blasint lda) { | |||
| FLOAT* Alpha = (FLOAT*) VAlpha; | |||
| FLOAT* a = (FLOAT*) va; | |||
| FLOAT* x = (FLOAT*) vx; | |||
| FLOAT* y = (FLOAT*) vy; | |||
| FLOAT alpha_r = Alpha[0]; | |||
| FLOAT alpha_i = Alpha[1]; | |||