| @@ -17,7 +17,7 @@ jobs: | |||||
| - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32" | - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32" | ||||
| script: | script: | ||||
| - set -e | - 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 test $COMMON_FLAGS $BTYPE | ||||
| - make -C ctest $COMMON_FLAGS $BTYPE | - make -C ctest $COMMON_FLAGS $BTYPE | ||||
| - make -C utest $COMMON_FLAGS $BTYPE | - make -C utest $COMMON_FLAGS $BTYPE | ||||
| @@ -67,7 +67,7 @@ jobs: | |||||
| - gfortran-mingw-w64-x86-64 | - gfortran-mingw-w64-x86-64 | ||||
| before_script: *common-before | before_script: *common-before | ||||
| script: | script: | ||||
| - make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE | |||||
| - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE | |||||
| env: | env: | ||||
| - TARGET_BOX=WIN64 | - TARGET_BOX=WIN64 | ||||
| - BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran" | - 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 | - TARGET_BOX=LINUX64_MUSL | ||||
| - BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=core2" | - 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 | # whitelist | ||||
| branches: | branches: | ||||
| only: | only: | ||||
| @@ -3,53 +3,30 @@ | |||||
| ## | ## | ||||
| cmake_minimum_required(VERSION 2.8.5) | cmake_minimum_required(VERSION 2.8.5) | ||||
| project(OpenBLAS) | |||||
| project(OpenBLAS C ASM) | |||||
| set(OpenBLAS_MAJOR_VERSION 0) | set(OpenBLAS_MAJOR_VERSION 0) | ||||
| set(OpenBLAS_MINOR_VERSION 3) | set(OpenBLAS_MINOR_VERSION 3) | ||||
| set(OpenBLAS_PATCH_VERSION 0.dev) | set(OpenBLAS_PATCH_VERSION 0.dev) | ||||
| set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}") | set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}") | ||||
| enable_language(ASM) | |||||
| enable_language(C) | |||||
| # Adhere to GNU filesystem layout conventions | # Adhere to GNU filesystem layout conventions | ||||
| include(GNUInstallDirs) | include(GNUInstallDirs) | ||||
| if(MSVC) | |||||
| set(OpenBLAS_LIBNAME libopenblas) | |||||
| else() | |||||
| set(OpenBLAS_LIBNAME openblas) | set(OpenBLAS_LIBNAME openblas) | ||||
| endif() | |||||
| ####### | ####### | ||||
| if(MSVC) | if(MSVC) | ||||
| option(BUILD_WITHOUT_LAPACK "Without LAPACK and LAPACKE (Only BLAS or CBLAS)" ON) | option(BUILD_WITHOUT_LAPACK "Without LAPACK and LAPACKE (Only BLAS or CBLAS)" ON) | ||||
| endif() | endif() | ||||
| option(BUILD_WITHOUT_CBLAS "Without CBLAS" OFF) | option(BUILD_WITHOUT_CBLAS "Without CBLAS" OFF) | ||||
| option(BUILD_DEBUG "Build Debug Version" OFF) | |||||
| option(DYNAMIC_ARCH "Build with DYNAMIC_ARCH" OFF) | option(DYNAMIC_ARCH "Build with DYNAMIC_ARCH" OFF) | ||||
| option(BUILD_RELAPACK "Build with ReLAPACK (recursive LAPACK" OFF) | |||||
| ####### | ####### | ||||
| if(BUILD_WITHOUT_LAPACK) | if(BUILD_WITHOUT_LAPACK) | ||||
| set(NO_LAPACK 1) | set(NO_LAPACK 1) | ||||
| set(NO_LAPACKE 1) | set(NO_LAPACKE 1) | ||||
| endif() | 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) | if(BUILD_WITHOUT_CBLAS) | ||||
| set(NO_CBLAS 1) | set(NO_CBLAS 1) | ||||
| endif() | endif() | ||||
| @@ -75,6 +52,9 @@ endif () | |||||
| set(SUBDIRS ${BLASDIRS}) | set(SUBDIRS ${BLASDIRS}) | ||||
| if (NOT NO_LAPACK) | if (NOT NO_LAPACK) | ||||
| list(APPEND SUBDIRS lapack) | list(APPEND SUBDIRS lapack) | ||||
| if(BUILD_RELAPACK) | |||||
| list(APPEND SUBDIRS relapack/src) | |||||
| endif() | |||||
| endif () | endif () | ||||
| # set which float types we want to build for | # 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) | set(BUILD_COMPLEX16 true) | ||||
| endif () | endif () | ||||
| if (NOT DEFINED BUILD_MATGEN) | |||||
| set(BUILD_MATGEN true) | |||||
| endif() | |||||
| set(FLOAT_TYPES "") | set(FLOAT_TYPES "") | ||||
| if (BUILD_SINGLE) | if (BUILD_SINGLE) | ||||
| message(STATUS "Building Single Precision") | message(STATUS "Building Single Precision") | ||||
| @@ -107,19 +91,10 @@ if (BUILD_COMPLEX16) | |||||
| list(APPEND FLOAT_TYPES "ZCOMPLEX") # defines COMPLEX and DOUBLE | list(APPEND FLOAT_TYPES "ZCOMPLEX") # defines COMPLEX and DOUBLE | ||||
| endif () | 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") | 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.") | message(FATAL_ERROR "Detecting CPU failed. Please set TARGET explicitly, e.g. make TARGET=your_cpu_target. Please read README for details.") | ||||
| endif () | endif () | ||||
| if (${NO_STATIC} AND ${NO_SHARED}) | |||||
| message(FATAL_ERROR "Neither static nor shared are enabled.") | |||||
| endif () | |||||
| #Set default output directory | #Set default output directory | ||||
| set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) | set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) | ||||
| set( CMAKE_ARCHIVE_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. | # 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) | if (NOT NOFORTRAN AND NOT NO_LAPACK) | ||||
| include("${PROJECT_SOURCE_DIR}/cmake/lapack.cmake") | 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 () | endif () | ||||
| # Only generate .def for dll on MSVC and always produce pdb files for debug and release | # Only generate .def for dll on MSVC and always produce pdb files for debug and release | ||||
| if(MSVC) | 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() | 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}) | if (${DYNAMIC_ARCH}) | ||||
| add_subdirectory(kernel) | add_subdirectory(kernel) | ||||
| foreach(TARGET_CORE ${DYNAMIC_CORE}) | foreach(TARGET_CORE ${DYNAMIC_CORE}) | ||||
| @@ -169,11 +138,29 @@ if (${DYNAMIC_ARCH}) | |||||
| endforeach() | endforeach() | ||||
| endif () | endif () | ||||
| # Only build shared libs for MSVC | |||||
| if (MSVC) | |||||
| set(BUILD_SHARED_LIBS ON) | |||||
| endif() | |||||
| # add objects to the openblas lib | # 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 output for libopenblas | ||||
| set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) | 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}) | foreach (OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) | ||||
| string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG ) | 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 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 LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} ) | ||||
| set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} ) | set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} ) | ||||
| endforeach() | endforeach() | ||||
| enable_testing() | 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() | 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() | endif() | ||||
| if (NOT MSVC AND NOT NOFORTRAN) | |||||
| # Build test and ctest | |||||
| add_subdirectory(test) | |||||
| if(NOT NO_CBLAS) | |||||
| add_subdirectory(ctest) | |||||
| endif() | |||||
| endif() | endif() | ||||
| set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES | |||||
| set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES | |||||
| VERSION ${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION} | VERSION ${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION} | ||||
| SOVERSION ${OpenBLAS_MAJOR_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 project | ||||
| # Install libraries | # Install libraries | ||||
| install(TARGETS ${OpenBLAS_LIBNAME} | install(TARGETS ${OpenBLAS_LIBNAME} | ||||
| RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} | ||||
| ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} | 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) | if(NOT NO_CBLAS) | ||||
| message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}") | message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}") | ||||
| @@ -276,16 +255,12 @@ if(NOT NO_LAPACKE) | |||||
| add_dependencies( ${OpenBLAS_LIBNAME} genlapacke) | add_dependencies( ${OpenBLAS_LIBNAME} genlapacke) | ||||
| FILE(GLOB_RECURSE INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/*.h") | FILE(GLOB_RECURSE INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/*.h") | ||||
| install (FILES ${INCLUDE_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) | install (FILES ${INCLUDE_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) | ||||
| ADD_CUSTOM_TARGET(genlapacke | 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" | 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}) | install (FILES ${CMAKE_BINARY_DIR}/lapacke_mangling.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) | ||||
| endif() | endif() | ||||
| if(NOT MSVC) | |||||
| install (TARGETS ${OpenBLAS_LIBNAME}_static DESTINATION ${CMAKE_INSTALL_LIBDIR}) | |||||
| endif() | |||||
| include(FindPkgConfig QUIET) | include(FindPkgConfig QUIET) | ||||
| if(PKG_CONFIG_FOUND) | if(PKG_CONFIG_FOUND) | ||||
| @@ -270,6 +270,7 @@ endif | |||||
| ifeq ($(BUILD_LAPACK_DEPRECATED), 1) | ifeq ($(BUILD_LAPACK_DEPRECATED), 1) | ||||
| -@echo "BUILD_DEPRECATED = 1" >> $(NETLIB_LAPACK_DIR)/make.inc | -@echo "BUILD_DEPRECATED = 1" >> $(NETLIB_LAPACK_DIR)/make.inc | ||||
| endif | endif | ||||
| -@echo "LAPACKE_WITH_TMG = 1" >> $(NETLIB_LAPACK_DIR)/make.inc | |||||
| -@cat make.inc >> $(NETLIB_LAPACK_DIR)/make.inc | -@cat make.inc >> $(NETLIB_LAPACK_DIR)/make.inc | ||||
| endif | endif | ||||
| @@ -100,12 +100,12 @@ endif | |||||
| #Generating openblas.pc | #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 | #Generating OpenBLASConfig.cmake | ||||
| @@ -29,6 +29,10 @@ ifeq ($(TARGET), P6600) | |||||
| TARGET_FLAGS = -mips64r6 | TARGET_FLAGS = -mips64r6 | ||||
| endif | endif | ||||
| ifeq ($(TARGET), I6500) | |||||
| TARGET_FLAGS = -mips64r6 | |||||
| endif | |||||
| all: getarch_2nd | all: getarch_2nd | ||||
| ./getarch_2nd 0 >> $(TARGET_MAKE) | ./getarch_2nd 0 >> $(TARGET_MAKE) | ||||
| ./getarch_2nd 1 >> $(TARGET_CONF) | ./getarch_2nd 1 >> $(TARGET_CONF) | ||||
| @@ -181,6 +181,7 @@ endif | |||||
| ifeq ($(NUM_THREADS), 1) | ifeq ($(NUM_THREADS), 1) | ||||
| override USE_THREAD = 0 | override USE_THREAD = 0 | ||||
| override USE_OPENMP = 0 | |||||
| endif | endif | ||||
| ifdef USE_THREAD | 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) | FCOMMON_OPT += -mips64r6 -mnan=2008 -mtune=p6600 $(MSA_FLAGS) | ||||
| endif | 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) | ifeq ($(OSNAME), AIX) | ||||
| BINARY_DEFINED = 1 | BINARY_DEFINED = 1 | ||||
| endif | endif | ||||
| @@ -2,7 +2,7 @@ | |||||
| [](https://gitter.im/xianyi/OpenBLAS?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) | [](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) | AppVeyor: [](https://ci.appveyor.com/project/xianyi/openblas/branch/develop) | ||||
| ## Introduction | ## Introduction | ||||
| @@ -106,6 +106,9 @@ Please read GotoBLAS_01Readme.txt | |||||
| - **ARMV8**: Experimental | - **ARMV8**: Experimental | ||||
| - **ARM Cortex-A57**: Experimental | - **ARM Cortex-A57**: Experimental | ||||
| #### PPC/PPC64 | |||||
| - **POWER8**: Optmized Level-3 BLAS and some Level-1, only with USE_OPENMP=1 | |||||
| #### IBM zEnterprise System: | #### IBM zEnterprise System: | ||||
| - **Z13**: Optimized Level-3 BLAS and Level-1,2 (double precision) | - **Z13**: Optimized Level-3 BLAS and Level-1,2 (double precision) | ||||
| @@ -63,6 +63,7 @@ LOONGSON3A | |||||
| LOONGSON3B | LOONGSON3B | ||||
| I6400 | I6400 | ||||
| P6600 | P6600 | ||||
| I6500 | |||||
| 5.IA64 CPU: | 5.IA64 CPU: | ||||
| ITANIUM2 | ITANIUM2 | ||||
| @@ -5,6 +5,8 @@ version: 0.2.19.{build} | |||||
| platform: | platform: | ||||
| - x64 | - x64 | ||||
| os: Visual Studio 2017 | |||||
| configuration: Release | configuration: Release | ||||
| clone_folder: c:\projects\OpenBLAS | clone_folder: c:\projects\OpenBLAS | ||||
| @@ -24,29 +26,41 @@ skip_commits: | |||||
| message: /\[av skip\]/ | message: /\[av skip\]/ | ||||
| environment: | environment: | ||||
| global: | |||||
| CONDA_INSTALL_LOCN: C:\\Miniconda36-x64 | |||||
| matrix: | matrix: | ||||
| - COMPILER: clang-cl | - COMPILER: clang-cl | ||||
| DYNAMIC_ARCH: ON | |||||
| WITH_FORTRAN: yes | |||||
| - COMPILER: clang-cl | - COMPILER: clang-cl | ||||
| DYNAMIC_ARCH: ON | |||||
| WITH_FORTRAN: no | |||||
| - COMPILER: cl | - COMPILER: cl | ||||
| install: | 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 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: | 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: | build_script: | ||||
| - cmake --build . | - cmake --build . | ||||
| test_script: | test_script: | ||||
| - echo Running Test | - echo Running Test | ||||
| - cd c:\projects\OpenBLAS\utest | |||||
| - cd utest | |||||
| - openblas_utest | - openblas_utest | ||||
| @@ -121,13 +121,15 @@ static void *huge_malloc(BLASLONG size){ | |||||
| int main(int argc, char *argv[]){ | int main(int argc, char *argv[]){ | ||||
| FLOAT *a, *b, *c; | FLOAT *a, *b, *c; | ||||
| FLOAT alpha[] = {1.0, 1.0}; | |||||
| FLOAT alpha[] = {1.0, 0.0}; | |||||
| FLOAT beta [] = {0.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 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; | char *p; | ||||
| int from = 1; | int from = 1; | ||||
| @@ -135,86 +137,108 @@ int main(int argc, char *argv[]){ | |||||
| int step = 1; | int step = 1; | ||||
| struct timeval start, stop; | struct timeval start, stop; | ||||
| double time1,timeg; | |||||
| double time1, timeg; | |||||
| argc--;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 (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); | 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 | #ifdef linux | ||||
| srandom(getpid()); | srandom(getpid()); | ||||
| #endif | #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; | 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); | 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; | timeg = time1/loops; | ||||
| fprintf(stderr, | fprintf(stderr, | ||||
| " %10.2f MFlops %10.6f sec\n", | " %10.2f MFlops %10.6f sec\n", | ||||
| COMPSIZE * COMPSIZE * 2. * (double)m * (double)m * (double)n / timeg * 1.e-6, time1); | COMPSIZE * COMPSIZE * 2. * (double)m * (double)m * (double)n / timeg * 1.e-6, time1); | ||||
| } | } | ||||
| return 0; | 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); | 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); | 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); | 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); | 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); | 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); | 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_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_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_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_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_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_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_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_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_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); | 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_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_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, | 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); | 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, | 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); | 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, | 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, | 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_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_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_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_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_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_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_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_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, | 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); | 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, | 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); | 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, | 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); | 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, | 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); | 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, | 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, | 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, | 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); | 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, | 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); | 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, | 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, | 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, | 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); | 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, | 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); | 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, | 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, | 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, | 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); | 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, | 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); | 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, | 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, | 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, | 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); | 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, | 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); | 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, | 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, | 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, | 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); | 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, | 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); | 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, | 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_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_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_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_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, | 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, | 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, | 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, | 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, | 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); | 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, | 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); | 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, | 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, | 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, | 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, | 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, | 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, | 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); | 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, | 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, | 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, | 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); | 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, | 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); | 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, | 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, | 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, | 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); | 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, | 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); | 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, | 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, | 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, | 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); | 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, | 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); | 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, | 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, | 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, | 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); | 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, | 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); | 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, | 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, | 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, | 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, | 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, | 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, | 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, | 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, | 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, ...); | 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_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, | 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); | OPENBLAS_CONST blasint clda, float *b, OPENBLAS_CONST blasint cldb); | ||||
| @@ -3,9 +3,9 @@ | |||||
| ## Description: Ported from portion of OpenBLAS/Makefile.system | ## Description: Ported from portion of OpenBLAS/Makefile.system | ||||
| ## Sets various variables based on architecture. | ## 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) | if (NOT BINARY) | ||||
| set(NO_BINARY_MODE 1) | set(NO_BINARY_MODE 1) | ||||
| endif () | endif () | ||||
| @@ -33,41 +33,22 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel") | |||||
| endif () | endif () | ||||
| if (USE_OPENMP) | 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 () | endif () | ||||
| if (DYNAMIC_ARCH) | 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) | set(DYNAMIC_CORE KATMAI COPPERMINE NORTHWOOD PRESCOTT BANIAS CORE2 PENRYN DUNNINGTON NEHALEM ATHLON OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO) | ||||
| endif () | endif () | ||||
| if (${ARCH} STREQUAL "x86_64") | |||||
| if (X86_64) | |||||
| set(DYNAMIC_CORE PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO) | set(DYNAMIC_CORE PRESCOTT CORE2 PENRYN DUNNINGTON NEHALEM OPTERON OPTERON_SSE3 BARCELONA BOBCAT ATOM NANO) | ||||
| if (NOT NO_AVX) | if (NOT NO_AVX) | ||||
| set(DYNAMIC_CORE ${DYNAMIC_CORE} SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR) | set(DYNAMIC_CORE ${DYNAMIC_CORE} SANDYBRIDGE BULLDOZER PILEDRIVER STEAMROLLER EXCAVATOR) | ||||
| @@ -94,7 +75,7 @@ if (${ARCH} STREQUAL "ia64") | |||||
| endif () | endif () | ||||
| endif () | endif () | ||||
| if (${ARCH} STREQUAL "mips64") | |||||
| if (MIPS64) | |||||
| set(NO_BINARY_MODE 1) | set(NO_BINARY_MODE 1) | ||||
| endif () | endif () | ||||
| @@ -103,12 +84,12 @@ if (${ARCH} STREQUAL "alpha") | |||||
| set(BINARY_DEFINED 1) | set(BINARY_DEFINED 1) | ||||
| endif () | endif () | ||||
| if (${ARCH} STREQUAL "arm") | |||||
| if (ARM) | |||||
| set(NO_BINARY_MODE 1) | set(NO_BINARY_MODE 1) | ||||
| set(BINARY_DEFINED 1) | set(BINARY_DEFINED 1) | ||||
| endif () | endif () | ||||
| if (${ARCH} STREQUAL "arm64") | |||||
| if (ARM64) | |||||
| set(NO_BINARY_MODE 1) | set(NO_BINARY_MODE 1) | ||||
| set(BINARY_DEFINED 1) | set(BINARY_DEFINED 1) | ||||
| endif () | 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 (NO_BINARY_MODE) | ||||
| if (${ARCH} STREQUAL "mips64") | |||||
| if (MIPS64) | |||||
| if (BINARY64) | if (BINARY64) | ||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=64") | set(CCOMMON_OPT "${CCOMMON_OPT} -mabi=64") | ||||
| else () | else () | ||||
| @@ -24,17 +24,12 @@ if (${CMAKE_C_COMPILER} STREQUAL "GNU" OR ${CMAKE_C_COMPILER} STREQUAL "LSB" OR | |||||
| set(BINARY_DEFINED 1) | set(BINARY_DEFINED 1) | ||||
| endif () | endif () | ||||
| if (${CORE} STREQUAL "LOONGSON3A") | |||||
| if (${CORE} STREQUAL "LOONGSON3A" OR ${CORE} STREQUAL "LOONGSON3B") | |||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64") | set(CCOMMON_OPT "${CCOMMON_OPT} -march=mips64") | ||||
| set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64") | set(FCOMMON_OPT "${FCOMMON_OPT} -march=mips64") | ||||
| endif () | 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) | set(BINARY_DEFINED 1) | ||||
| endif () | endif () | ||||
| endif () | endif () | ||||
| @@ -66,7 +61,7 @@ endif () | |||||
| if (${CMAKE_C_COMPILER} STREQUAL "OPEN64") | if (${CMAKE_C_COMPILER} STREQUAL "OPEN64") | ||||
| if (${ARCH} STREQUAL "mips64") | |||||
| if (MIPS64) | |||||
| if (NOT BINARY64) | if (NOT BINARY64) | ||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -n32") | set(CCOMMON_OPT "${CCOMMON_OPT} -n32") | ||||
| @@ -94,10 +89,10 @@ endif () | |||||
| if (${CMAKE_C_COMPILER} STREQUAL "SUN") | if (${CMAKE_C_COMPILER} STREQUAL "SUN") | ||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -w") | set(CCOMMON_OPT "${CCOMMON_OPT} -w") | ||||
| if (${ARCH} STREQUAL "x86") | |||||
| if (X86) | |||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -m32") | set(CCOMMON_OPT "${CCOMMON_OPT} -m32") | ||||
| else () | else () | ||||
| set(FCOMMON_OPT "${FCOMMON_OPT} -m64") | |||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -m64") | |||||
| endif () | endif () | ||||
| endif () | endif () | ||||
| @@ -20,12 +20,6 @@ | |||||
| # NEEDBUNDERSCORE | # NEEDBUNDERSCORE | ||||
| # NEED2UNDERSCORES | # 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) | if (NOT NO_LAPACK) | ||||
| enable_language(Fortran) | enable_language(Fortran) | ||||
| else() | else() | ||||
| @@ -34,11 +28,7 @@ else() | |||||
| endif() | endif() | ||||
| if (NOT ONLY_CBLAS) | 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) | # 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: detect whether underscore needed, set #defines and BU appropriately - use try_compile | ||||
| # TODO: set FEXTRALIB flags a la f_check? | # TODO: set FEXTRALIB flags a la f_check? | ||||
| @@ -5,13 +5,8 @@ | |||||
| if (${F_COMPILER} STREQUAL "FLANG") | if (${F_COMPILER} STREQUAL "FLANG") | ||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_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 () | endif () | ||||
| if (USE_OPENMP) | if (USE_OPENMP) | ||||
| set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp") | set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp") | ||||
| @@ -50,7 +45,7 @@ if (${F_COMPILER} STREQUAL "GFORTRAN") | |||||
| set(EXTRALIB "{EXTRALIB} -lgfortran") | set(EXTRALIB "{EXTRALIB} -lgfortran") | ||||
| endif () | endif () | ||||
| if (NO_BINARY_MODE) | if (NO_BINARY_MODE) | ||||
| if (${ARCH} STREQUAL "mips64") | |||||
| if (MIPS64) | |||||
| if (BINARY64) | if (BINARY64) | ||||
| set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=64") | set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=64") | ||||
| else () | else () | ||||
| @@ -130,7 +125,7 @@ if (${F_COMPILER} STREQUAL "PATHSCALE") | |||||
| endif () | endif () | ||||
| endif () | endif () | ||||
| if (NOT ${ARCH} STREQUAL "mips64") | |||||
| if (NOT MIPS64) | |||||
| if (NOT BINARY64) | if (NOT BINARY64) | ||||
| set(FCOMMON_OPT "${FCOMMON_OPT} -m32") | set(FCOMMON_OPT "${FCOMMON_OPT} -m32") | ||||
| else () | else () | ||||
| @@ -158,7 +153,7 @@ if (${F_COMPILER} STREQUAL "OPEN64") | |||||
| endif () | endif () | ||||
| endif () | endif () | ||||
| if (${ARCH} STREQUAL "mips64") | |||||
| if (MIPS64) | |||||
| if (NOT BINARY64) | if (NOT BINARY64) | ||||
| set(FCOMMON_OPT "${FCOMMON_OPT} -n32") | set(FCOMMON_OPT "${FCOMMON_OPT} -n32") | ||||
| @@ -189,7 +184,7 @@ endif () | |||||
| if (${F_COMPILER} STREQUAL "SUN") | if (${F_COMPILER} STREQUAL "SUN") | ||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_SUN") | set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_SUN") | ||||
| if (${ARCH} STREQUAL "x86") | |||||
| if (X86) | |||||
| set(FCOMMON_OPT "${FCOMMON_OPT} -m32") | set(FCOMMON_OPT "${FCOMMON_OPT} -m32") | ||||
| else () | else () | ||||
| set(FCOMMON_OPT "${FCOMMON_OPT} -m64") | 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. | # 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 | 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 | 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 | 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 | 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 | 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 | 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 | # add lapack-netlib folder to the sources | ||||
| set(LA_SOURCES "") | set(LA_SOURCES "") | ||||
| foreach (LA_FILE ${LA_REL_SRC}) | foreach (LA_FILE ${LA_REL_SRC}) | ||||
| list(APPEND LA_SOURCES "${NETLIB_LAPACK_DIR}/SRC/${LA_FILE}") | list(APPEND LA_SOURCES "${NETLIB_LAPACK_DIR}/SRC/${LA_FILE}") | ||||
| endforeach () | 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}") | 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.c | ||||
| lapacke_cbbcsd_work.c | lapacke_cbbcsd_work.c | ||||
| lapacke_cbdsqr.c | lapacke_cbdsqr.c | ||||
| @@ -46,6 +46,8 @@ set(C_SRC | |||||
| lapacke_cgehrd_work.c | lapacke_cgehrd_work.c | ||||
| lapacke_cgejsv.c | lapacke_cgejsv.c | ||||
| lapacke_cgejsv_work.c | lapacke_cgejsv_work.c | ||||
| lapacke_cgelq.c | |||||
| lapacke_cgelq_work.c | |||||
| lapacke_cgelq2.c | lapacke_cgelq2.c | ||||
| lapacke_cgelq2_work.c | lapacke_cgelq2_work.c | ||||
| lapacke_cgelqf.c | lapacke_cgelqf.c | ||||
| @@ -60,12 +62,18 @@ set(C_SRC | |||||
| lapacke_cgelsy_work.c | lapacke_cgelsy_work.c | ||||
| lapacke_cgemqr.c | lapacke_cgemqr.c | ||||
| lapacke_cgemqr_work.c | lapacke_cgemqr_work.c | ||||
| lapacke_cgemlq.c | |||||
| lapacke_cgemlq_work.c | |||||
| lapacke_cgemqrt.c | lapacke_cgemqrt.c | ||||
| lapacke_cgemqrt_work.c | lapacke_cgemqrt_work.c | ||||
| lapacke_cgeqlf.c | lapacke_cgeqlf.c | ||||
| lapacke_cgeqlf_work.c | lapacke_cgeqlf_work.c | ||||
| lapacke_cgeqp3.c | lapacke_cgeqp3.c | ||||
| lapacke_cgeqp3_work.c | lapacke_cgeqp3_work.c | ||||
| lapacke_cgeqpf.c | |||||
| lapacke_cgeqpf_work.c | |||||
| lapacke_cgeqr.c | |||||
| lapacke_cgeqr_work.c | |||||
| lapacke_cgeqr2.c | lapacke_cgeqr2.c | ||||
| lapacke_cgeqr2_work.c | lapacke_cgeqr2_work.c | ||||
| lapacke_cgeqrf.c | lapacke_cgeqrf.c | ||||
| @@ -134,8 +142,12 @@ set(C_SRC | |||||
| lapacke_cggqrf_work.c | lapacke_cggqrf_work.c | ||||
| lapacke_cggrqf.c | lapacke_cggrqf.c | ||||
| lapacke_cggrqf_work.c | lapacke_cggrqf_work.c | ||||
| lapacke_cggsvd.c | |||||
| lapacke_cggsvd_work.c | |||||
| lapacke_cggsvd3.c | lapacke_cggsvd3.c | ||||
| lapacke_cggsvd3_work.c | lapacke_cggsvd3_work.c | ||||
| lapacke_cggsvp.c | |||||
| lapacke_cggsvp_work.c | |||||
| lapacke_cggsvp3.c | lapacke_cggsvp3.c | ||||
| lapacke_cggsvp3_work.c | lapacke_cggsvp3_work.c | ||||
| lapacke_cgtcon.c | lapacke_cgtcon.c | ||||
| @@ -210,6 +222,8 @@ set(C_SRC | |||||
| lapacke_chesv_work.c | lapacke_chesv_work.c | ||||
| lapacke_chesv_aa.c | lapacke_chesv_aa.c | ||||
| lapacke_chesv_aa_work.c | lapacke_chesv_aa_work.c | ||||
| lapacke_chesv_aa_2stage.c | |||||
| lapacke_chesv_aa_2stage_work.c | |||||
| lapacke_chesv_rk.c | lapacke_chesv_rk.c | ||||
| lapacke_chesv_rk_work.c | lapacke_chesv_rk_work.c | ||||
| lapacke_chesvx.c | lapacke_chesvx.c | ||||
| @@ -224,6 +238,8 @@ set(C_SRC | |||||
| lapacke_chetrf_rook_work.c | lapacke_chetrf_rook_work.c | ||||
| lapacke_chetrf_aa.c | lapacke_chetrf_aa.c | ||||
| lapacke_chetrf_aa_work.c | lapacke_chetrf_aa_work.c | ||||
| lapacke_chetrf_aa_2stage.c | |||||
| lapacke_chetrf_aa_2stage_work.c | |||||
| lapacke_chetrf_rk.c | lapacke_chetrf_rk.c | ||||
| lapacke_chetrf_rk_work.c | lapacke_chetrf_rk_work.c | ||||
| lapacke_chetri.c | lapacke_chetri.c | ||||
| @@ -242,6 +258,9 @@ set(C_SRC | |||||
| lapacke_chetrs_rook_work.c | lapacke_chetrs_rook_work.c | ||||
| lapacke_chetrs_aa.c | lapacke_chetrs_aa.c | ||||
| lapacke_chetrs_aa_work.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.c | ||||
| lapacke_chetrs_3_work.c | lapacke_chetrs_3_work.c | ||||
| lapacke_chfrk.c | lapacke_chfrk.c | ||||
| @@ -290,6 +309,11 @@ set(C_SRC | |||||
| lapacke_clacp2_work.c | lapacke_clacp2_work.c | ||||
| lapacke_clacpy.c | lapacke_clacpy.c | ||||
| lapacke_clacpy_work.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.c | ||||
| lapacke_clag2z_work.c | lapacke_clag2z_work.c | ||||
| lapacke_clange.c | lapacke_clange.c | ||||
| @@ -318,6 +342,8 @@ set(C_SRC | |||||
| lapacke_clascl_work.c | lapacke_clascl_work.c | ||||
| lapacke_claset.c | lapacke_claset.c | ||||
| lapacke_claset_work.c | lapacke_claset_work.c | ||||
| lapacke_classq.c | |||||
| lapacke_classq_work.c | |||||
| lapacke_claswp.c | lapacke_claswp.c | ||||
| lapacke_claswp_work.c | lapacke_claswp_work.c | ||||
| lapacke_clauum.c | lapacke_clauum.c | ||||
| @@ -436,6 +462,8 @@ set(C_SRC | |||||
| lapacke_csysv_work.c | lapacke_csysv_work.c | ||||
| lapacke_csysv_aa.c | lapacke_csysv_aa.c | ||||
| lapacke_csysv_aa_work.c | lapacke_csysv_aa_work.c | ||||
| lapacke_csysv_aa_2stage.c | |||||
| lapacke_csysv_aa_2stage_work.c | |||||
| lapacke_csysv_rk.c | lapacke_csysv_rk.c | ||||
| lapacke_csysv_rk_work.c | lapacke_csysv_rk_work.c | ||||
| lapacke_csysvx.c | lapacke_csysvx.c | ||||
| @@ -448,6 +476,8 @@ set(C_SRC | |||||
| lapacke_csytrf_rook_work.c | lapacke_csytrf_rook_work.c | ||||
| lapacke_csytrf_aa.c | lapacke_csytrf_aa.c | ||||
| lapacke_csytrf_aa_work.c | lapacke_csytrf_aa_work.c | ||||
| lapacke_csytrf_aa_2stage.c | |||||
| lapacke_csytrf_aa_2stage_work.c | |||||
| lapacke_csytrf_rk.c | lapacke_csytrf_rk.c | ||||
| lapacke_csytrf_rk_work.c | lapacke_csytrf_rk_work.c | ||||
| lapacke_csytri.c | lapacke_csytri.c | ||||
| @@ -466,6 +496,8 @@ set(C_SRC | |||||
| lapacke_csytrs_rook_work.c | lapacke_csytrs_rook_work.c | ||||
| lapacke_csytrs_aa.c | lapacke_csytrs_aa.c | ||||
| lapacke_csytrs_aa_work.c | lapacke_csytrs_aa_work.c | ||||
| lapacke_csytrs_aa_2stage.c | |||||
| lapacke_csytrs_aa_2stage_work.c | |||||
| lapacke_csytrs_3.c | lapacke_csytrs_3.c | ||||
| lapacke_csytrs_3_work.c | lapacke_csytrs_3_work.c | ||||
| lapacke_ctbcon.c | lapacke_ctbcon.c | ||||
| @@ -633,6 +665,8 @@ set(DSRC | |||||
| lapacke_dgehrd_work.c | lapacke_dgehrd_work.c | ||||
| lapacke_dgejsv.c | lapacke_dgejsv.c | ||||
| lapacke_dgejsv_work.c | lapacke_dgejsv_work.c | ||||
| lapacke_dgelq.c | |||||
| lapacke_dgelq_work.c | |||||
| lapacke_dgelq2.c | lapacke_dgelq2.c | ||||
| lapacke_dgelq2_work.c | lapacke_dgelq2_work.c | ||||
| lapacke_dgelqf.c | lapacke_dgelqf.c | ||||
| @@ -645,6 +679,8 @@ set(DSRC | |||||
| lapacke_dgelss_work.c | lapacke_dgelss_work.c | ||||
| lapacke_dgelsy.c | lapacke_dgelsy.c | ||||
| lapacke_dgelsy_work.c | lapacke_dgelsy_work.c | ||||
| lapacke_dgemlq.c | |||||
| lapacke_dgemlq_work.c | |||||
| lapacke_dgemqr.c | lapacke_dgemqr.c | ||||
| lapacke_dgemqr_work.c | lapacke_dgemqr_work.c | ||||
| lapacke_dgemqrt.c | lapacke_dgemqrt.c | ||||
| @@ -653,6 +689,10 @@ set(DSRC | |||||
| lapacke_dgeqlf_work.c | lapacke_dgeqlf_work.c | ||||
| lapacke_dgeqp3.c | lapacke_dgeqp3.c | ||||
| lapacke_dgeqp3_work.c | lapacke_dgeqp3_work.c | ||||
| lapacke_dgeqpf.c | |||||
| lapacke_dgeqpf_work.c | |||||
| lapacke_dgeqr.c | |||||
| lapacke_dgeqr_work.c | |||||
| lapacke_dgeqr2.c | lapacke_dgeqr2.c | ||||
| lapacke_dgeqr2_work.c | lapacke_dgeqr2_work.c | ||||
| lapacke_dgeqrf.c | lapacke_dgeqrf.c | ||||
| @@ -721,8 +761,12 @@ set(DSRC | |||||
| lapacke_dggqrf_work.c | lapacke_dggqrf_work.c | ||||
| lapacke_dggrqf.c | lapacke_dggrqf.c | ||||
| lapacke_dggrqf_work.c | lapacke_dggrqf_work.c | ||||
| lapacke_dggsvd.c | |||||
| lapacke_dggsvd_work.c | |||||
| lapacke_dggsvd3.c | lapacke_dggsvd3.c | ||||
| lapacke_dggsvd3_work.c | lapacke_dggsvd3_work.c | ||||
| lapacke_dggsvp.c | |||||
| lapacke_dggsvp_work.c | |||||
| lapacke_dggsvp3.c | lapacke_dggsvp3.c | ||||
| lapacke_dggsvp3_work.c | lapacke_dggsvp3_work.c | ||||
| lapacke_dgtcon.c | lapacke_dgtcon.c | ||||
| @@ -785,6 +829,9 @@ set(DSRC | |||||
| lapacke_dlaset_work.c | lapacke_dlaset_work.c | ||||
| lapacke_dlasrt.c | lapacke_dlasrt.c | ||||
| lapacke_dlasrt_work.c | lapacke_dlasrt_work.c | ||||
| lapacke_dlassq.c | |||||
| lapacke_dlassq_work.c | |||||
| lapacke_dlaswp.c | |||||
| lapacke_dlaswp.c | lapacke_dlaswp.c | ||||
| lapacke_dlaswp_work.c | lapacke_dlaswp_work.c | ||||
| lapacke_dlauum.c | lapacke_dlauum.c | ||||
| @@ -1025,6 +1072,8 @@ set(DSRC | |||||
| lapacke_dsysv_work.c | lapacke_dsysv_work.c | ||||
| lapacke_dsysv_aa.c | lapacke_dsysv_aa.c | ||||
| lapacke_dsysv_aa_work.c | lapacke_dsysv_aa_work.c | ||||
| lapacke_dsysv_aa_2stage.c | |||||
| lapacke_dsysv_aa_2stage_work.c | |||||
| lapacke_dsysv_rk.c | lapacke_dsysv_rk.c | ||||
| lapacke_dsysv_rk_work.c | lapacke_dsysv_rk_work.c | ||||
| lapacke_dsysvx.c | lapacke_dsysvx.c | ||||
| @@ -1039,6 +1088,8 @@ set(DSRC | |||||
| lapacke_dsytrf_rook_work.c | lapacke_dsytrf_rook_work.c | ||||
| lapacke_dsytrf_aa.c | lapacke_dsytrf_aa.c | ||||
| lapacke_dsytrf_aa_work.c | lapacke_dsytrf_aa_work.c | ||||
| lapacke_dsytrf_aa_2stage.c | |||||
| lapacke_dsytrf_aa_2stage_work.c | |||||
| lapacke_dsytrf_rk.c | lapacke_dsytrf_rk.c | ||||
| lapacke_dsytrf_rk_work.c | lapacke_dsytrf_rk_work.c | ||||
| lapacke_dsytri.c | lapacke_dsytri.c | ||||
| @@ -1055,6 +1106,8 @@ set(DSRC | |||||
| lapacke_dsytrs2_work.c | lapacke_dsytrs2_work.c | ||||
| lapacke_dsytrs_aa.c | lapacke_dsytrs_aa.c | ||||
| lapacke_dsytrs_aa_work.c | lapacke_dsytrs_aa_work.c | ||||
| lapacke_dsytrs_aa_2stage.c | |||||
| lapacke_dsytrs_aa_2stage_work.c | |||||
| lapacke_dsytrs_3.c | lapacke_dsytrs_3.c | ||||
| lapacke_dsytrs_3_work.c | lapacke_dsytrs_3_work.c | ||||
| lapacke_dsytrs_work.c | lapacke_dsytrs_work.c | ||||
| @@ -1184,6 +1237,8 @@ set(SSRC | |||||
| lapacke_sgehrd_work.c | lapacke_sgehrd_work.c | ||||
| lapacke_sgejsv.c | lapacke_sgejsv.c | ||||
| lapacke_sgejsv_work.c | lapacke_sgejsv_work.c | ||||
| lapacke_sgelq.c | |||||
| lapacke_sgelq_work.c | |||||
| lapacke_sgelq2.c | lapacke_sgelq2.c | ||||
| lapacke_sgelq2_work.c | lapacke_sgelq2_work.c | ||||
| lapacke_sgelqf.c | lapacke_sgelqf.c | ||||
| @@ -1196,6 +1251,8 @@ set(SSRC | |||||
| lapacke_sgelss_work.c | lapacke_sgelss_work.c | ||||
| lapacke_sgelsy.c | lapacke_sgelsy.c | ||||
| lapacke_sgelsy_work.c | lapacke_sgelsy_work.c | ||||
| lapacke_sgemlq.c | |||||
| lapacke_sgemlq_work.c | |||||
| lapacke_sgemqr.c | lapacke_sgemqr.c | ||||
| lapacke_sgemqr_work.c | lapacke_sgemqr_work.c | ||||
| lapacke_sgemqrt.c | lapacke_sgemqrt.c | ||||
| @@ -1204,6 +1261,10 @@ set(SSRC | |||||
| lapacke_sgeqlf_work.c | lapacke_sgeqlf_work.c | ||||
| lapacke_sgeqp3.c | lapacke_sgeqp3.c | ||||
| lapacke_sgeqp3_work.c | lapacke_sgeqp3_work.c | ||||
| lapacke_sgeqpf.c | |||||
| lapacke_sgeqpf_work.c | |||||
| lapacke_sgeqr.c | |||||
| lapacke_sgeqr_work.c | |||||
| lapacke_sgeqr2.c | lapacke_sgeqr2.c | ||||
| lapacke_sgeqr2_work.c | lapacke_sgeqr2_work.c | ||||
| lapacke_sgeqrf.c | lapacke_sgeqrf.c | ||||
| @@ -1272,8 +1333,12 @@ set(SSRC | |||||
| lapacke_sggqrf_work.c | lapacke_sggqrf_work.c | ||||
| lapacke_sggrqf.c | lapacke_sggrqf.c | ||||
| lapacke_sggrqf_work.c | lapacke_sggrqf_work.c | ||||
| lapacke_sggsvd.c | |||||
| lapacke_sggsvd_work.c | |||||
| lapacke_sggsvd3.c | lapacke_sggsvd3.c | ||||
| lapacke_sggsvd3_work.c | lapacke_sggsvd3_work.c | ||||
| lapacke_sggsvp.c | |||||
| lapacke_sggsvp_work.c | |||||
| lapacke_sggsvp3.c | lapacke_sggsvp3.c | ||||
| lapacke_sggsvp3_work.c | lapacke_sggsvp3_work.c | ||||
| lapacke_sgtcon.c | lapacke_sgtcon.c | ||||
| @@ -1336,6 +1401,8 @@ set(SSRC | |||||
| lapacke_slaset_work.c | lapacke_slaset_work.c | ||||
| lapacke_slasrt.c | lapacke_slasrt.c | ||||
| lapacke_slasrt_work.c | lapacke_slasrt_work.c | ||||
| lapacke_slassq.c | |||||
| lapacke_slassq_work.c | |||||
| lapacke_slaswp.c | lapacke_slaswp.c | ||||
| lapacke_slaswp_work.c | lapacke_slaswp_work.c | ||||
| lapacke_slauum.c | lapacke_slauum.c | ||||
| @@ -1572,6 +1639,8 @@ set(SSRC | |||||
| lapacke_ssysv_work.c | lapacke_ssysv_work.c | ||||
| lapacke_ssysv_aa.c | lapacke_ssysv_aa.c | ||||
| lapacke_ssysv_aa_work.c | lapacke_ssysv_aa_work.c | ||||
| lapacke_ssysv_aa_2stage.c | |||||
| lapacke_ssysv_aa_2stage_work.c | |||||
| lapacke_ssysv_rk.c | lapacke_ssysv_rk.c | ||||
| lapacke_ssysv_rk_work.c | lapacke_ssysv_rk_work.c | ||||
| lapacke_ssysvx.c | lapacke_ssysvx.c | ||||
| @@ -1586,6 +1655,9 @@ set(SSRC | |||||
| lapacke_ssytrf_rook_work.c | lapacke_ssytrf_rook_work.c | ||||
| lapacke_ssytrf_aa.c | lapacke_ssytrf_aa.c | ||||
| lapacke_ssytrf_aa_work.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.c | ||||
| lapacke_ssytrf_rk_work.c | lapacke_ssytrf_rk_work.c | ||||
| lapacke_ssytri.c | lapacke_ssytri.c | ||||
| @@ -1602,6 +1674,8 @@ set(SSRC | |||||
| lapacke_ssytrs2_work.c | lapacke_ssytrs2_work.c | ||||
| lapacke_ssytrs_aa.c | lapacke_ssytrs_aa.c | ||||
| lapacke_ssytrs_aa_work.c | lapacke_ssytrs_aa_work.c | ||||
| lapacke_ssytrs_aa_2stage.c | |||||
| lapacke_ssytrs_aa_2stage_work.c | |||||
| lapacke_ssytrs_3.c | lapacke_ssytrs_3.c | ||||
| lapacke_ssytrs_3_work.c | lapacke_ssytrs_3_work.c | ||||
| lapacke_ssytrs_work.c | lapacke_ssytrs_work.c | ||||
| @@ -1729,6 +1803,8 @@ set(ZSRC | |||||
| lapacke_zgehrd_work.c | lapacke_zgehrd_work.c | ||||
| lapacke_zgejsv.c | lapacke_zgejsv.c | ||||
| lapacke_zgejsv_work.c | lapacke_zgejsv_work.c | ||||
| lapacke_zgelq.c | |||||
| lapacke_zgelq_work.c | |||||
| lapacke_zgelq2.c | lapacke_zgelq2.c | ||||
| lapacke_zgelq2_work.c | lapacke_zgelq2_work.c | ||||
| lapacke_zgelqf.c | lapacke_zgelqf.c | ||||
| @@ -1741,6 +1817,8 @@ set(ZSRC | |||||
| lapacke_zgelss_work.c | lapacke_zgelss_work.c | ||||
| lapacke_zgelsy.c | lapacke_zgelsy.c | ||||
| lapacke_zgelsy_work.c | lapacke_zgelsy_work.c | ||||
| lapacke_zgemlq.c | |||||
| lapacke_zgemlq_work.c | |||||
| lapacke_zgemqr.c | lapacke_zgemqr.c | ||||
| lapacke_zgemqr_work.c | lapacke_zgemqr_work.c | ||||
| lapacke_zgemqrt.c | lapacke_zgemqrt.c | ||||
| @@ -1749,6 +1827,10 @@ set(ZSRC | |||||
| lapacke_zgeqlf_work.c | lapacke_zgeqlf_work.c | ||||
| lapacke_zgeqp3.c | lapacke_zgeqp3.c | ||||
| lapacke_zgeqp3_work.c | lapacke_zgeqp3_work.c | ||||
| lapacke_zgeqpf.c | |||||
| lapacke_zgeqpf_work.c | |||||
| lapacke_zgeqr.c | |||||
| lapacke_zgeqr_work.c | |||||
| lapacke_zgeqr2.c | lapacke_zgeqr2.c | ||||
| lapacke_zgeqr2_work.c | lapacke_zgeqr2_work.c | ||||
| lapacke_zgeqrf.c | lapacke_zgeqrf.c | ||||
| @@ -1817,8 +1899,12 @@ set(ZSRC | |||||
| lapacke_zggqrf_work.c | lapacke_zggqrf_work.c | ||||
| lapacke_zggrqf.c | lapacke_zggrqf.c | ||||
| lapacke_zggrqf_work.c | lapacke_zggrqf_work.c | ||||
| lapacke_zggsvd.c | |||||
| lapacke_zggsvd_work.c | |||||
| lapacke_zggsvd3.c | lapacke_zggsvd3.c | ||||
| lapacke_zggsvd3_work.c | lapacke_zggsvd3_work.c | ||||
| lapacke_zggsvp.c | |||||
| lapacke_zggsvp_work.c | |||||
| lapacke_zggsvp3.c | lapacke_zggsvp3.c | ||||
| lapacke_zggsvp3_work.c | lapacke_zggsvp3_work.c | ||||
| lapacke_zgtcon.c | lapacke_zgtcon.c | ||||
| @@ -1839,6 +1925,12 @@ set(ZSRC | |||||
| lapacke_zhbevd_work.c | lapacke_zhbevd_work.c | ||||
| lapacke_zhbevx.c | lapacke_zhbevx.c | ||||
| lapacke_zhbevx_work.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.c | ||||
| lapacke_zhbgst_work.c | lapacke_zhbgst_work.c | ||||
| lapacke_zhbgv.c | lapacke_zhbgv.c | ||||
| @@ -1887,6 +1979,8 @@ set(ZSRC | |||||
| lapacke_zhesv_work.c | lapacke_zhesv_work.c | ||||
| lapacke_zhesv_aa.c | lapacke_zhesv_aa.c | ||||
| lapacke_zhesv_aa_work.c | lapacke_zhesv_aa_work.c | ||||
| lapacke_zhesv_aa_2stage.c | |||||
| lapacke_zhesv_aa_2stage_work.c | |||||
| lapacke_zhesv_rk.c | lapacke_zhesv_rk.c | ||||
| lapacke_zhesv_rk_work.c | lapacke_zhesv_rk_work.c | ||||
| lapacke_zhesvx.c | lapacke_zhesvx.c | ||||
| @@ -1901,6 +1995,8 @@ set(ZSRC | |||||
| lapacke_zhetrf_rook_work.c | lapacke_zhetrf_rook_work.c | ||||
| lapacke_zhetrf_aa.c | lapacke_zhetrf_aa.c | ||||
| lapacke_zhetrf_aa_work.c | lapacke_zhetrf_aa_work.c | ||||
| lapacke_zhetrf_aa_2stage.c | |||||
| lapacke_zhetrf_aa_2stage_work.c | |||||
| lapacke_zhetrf_rk.c | lapacke_zhetrf_rk.c | ||||
| lapacke_zhetrf_rk_work.c | lapacke_zhetrf_rk_work.c | ||||
| lapacke_zhetri.c | lapacke_zhetri.c | ||||
| @@ -1918,6 +2014,8 @@ set(ZSRC | |||||
| lapacke_zhetrs_work.c | lapacke_zhetrs_work.c | ||||
| lapacke_zhetrs_aa.c | lapacke_zhetrs_aa.c | ||||
| lapacke_zhetrs_aa_work.c | lapacke_zhetrs_aa_work.c | ||||
| lapacke_zhetrs_aa_2stage.c | |||||
| lapacke_zhetrs_aa_2stage_work.c | |||||
| lapacke_zhetrs_3.c | lapacke_zhetrs_3.c | ||||
| lapacke_zhetrs_3_work.c | lapacke_zhetrs_3_work.c | ||||
| lapacke_zhetrs_rook_work.c | lapacke_zhetrs_rook_work.c | ||||
| @@ -1967,6 +2065,8 @@ set(ZSRC | |||||
| lapacke_zlacp2_work.c | lapacke_zlacp2_work.c | ||||
| lapacke_zlacpy.c | lapacke_zlacpy.c | ||||
| lapacke_zlacpy_work.c | lapacke_zlacpy_work.c | ||||
| lapacke_zlacrm.c | |||||
| lapacke_zlacrm_work.c | |||||
| lapacke_zlag2c.c | lapacke_zlag2c.c | ||||
| lapacke_zlag2c_work.c | lapacke_zlag2c_work.c | ||||
| lapacke_zlange.c | lapacke_zlange.c | ||||
| @@ -1981,6 +2081,8 @@ set(ZSRC | |||||
| lapacke_zlapmr_work.c | lapacke_zlapmr_work.c | ||||
| lapacke_zlapmt.c | lapacke_zlapmt.c | ||||
| lapacke_zlapmt_work.c | lapacke_zlapmt_work.c | ||||
| lapacke_zlarcm.c | |||||
| lapacke_zlarcm_work.c | |||||
| lapacke_zlarfb.c | lapacke_zlarfb.c | ||||
| lapacke_zlarfb_work.c | lapacke_zlarfb_work.c | ||||
| lapacke_zlarfg.c | lapacke_zlarfg.c | ||||
| @@ -1995,6 +2097,8 @@ set(ZSRC | |||||
| lapacke_zlascl_work.c | lapacke_zlascl_work.c | ||||
| lapacke_zlaset.c | lapacke_zlaset.c | ||||
| lapacke_zlaset_work.c | lapacke_zlaset_work.c | ||||
| lapacke_zlassq.c | |||||
| lapacke_zlassq_work.c | |||||
| lapacke_zlaswp.c | lapacke_zlaswp.c | ||||
| lapacke_zlaswp_work.c | lapacke_zlaswp_work.c | ||||
| lapacke_zlauum.c | lapacke_zlauum.c | ||||
| @@ -2113,6 +2217,8 @@ set(ZSRC | |||||
| lapacke_zsysv_work.c | lapacke_zsysv_work.c | ||||
| lapacke_zsysv_aa.c | lapacke_zsysv_aa.c | ||||
| lapacke_zsysv_aa_work.c | lapacke_zsysv_aa_work.c | ||||
| lapacke_zsysv_aa_2stage.c | |||||
| lapacke_zsysv_aa_2stage_work.c | |||||
| lapacke_zsysv_rk.c | lapacke_zsysv_rk.c | ||||
| lapacke_zsysv_rk_work.c | lapacke_zsysv_rk_work.c | ||||
| lapacke_zsysvx.c | lapacke_zsysvx.c | ||||
| @@ -2125,6 +2231,8 @@ set(ZSRC | |||||
| lapacke_zsytrf_rook_work.c | lapacke_zsytrf_rook_work.c | ||||
| lapacke_zsytrf_aa.c | lapacke_zsytrf_aa.c | ||||
| lapacke_zsytrf_aa_work.c | lapacke_zsytrf_aa_work.c | ||||
| lapacke_zsytrf_aa_2stage.c | |||||
| lapacke_zsytrf_aa_2stage_work.c | |||||
| lapacke_zsytrf_rk.c | lapacke_zsytrf_rk.c | ||||
| lapacke_zsytrf_rk_work.c | lapacke_zsytrf_rk_work.c | ||||
| lapacke_zsytri.c | lapacke_zsytri.c | ||||
| @@ -2143,6 +2251,8 @@ set(ZSRC | |||||
| lapacke_zsytrs_rook_work.c | lapacke_zsytrs_rook_work.c | ||||
| lapacke_zsytrs_aa.c | lapacke_zsytrs_aa.c | ||||
| lapacke_zsytrs_aa_work.c | lapacke_zsytrs_aa_work.c | ||||
| lapacke_zsytrs_aa_2stage.c | |||||
| lapacke_zsytrs_aa_2stage_work.c | |||||
| lapacke_zsytrs_3.c | lapacke_zsytrs_3.c | ||||
| lapacke_zsytrs_3_work.c | lapacke_zsytrs_3_work.c | ||||
| lapacke_ztbcon.c | lapacke_ztbcon.c | ||||
| @@ -2263,104 +2373,92 @@ set(ZSRC | |||||
| ) | ) | ||||
| set(SRCX | 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 | 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 | 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_zlagsy_work.c | ||||
| lapacke_nancheck.c | |||||
| ) | ) | ||||
| set(Utils_SRC | 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 "") | set(LAPACKE_REL_SRC "") | ||||
| @@ -2380,6 +2478,10 @@ if (BUILD_COMPLEX16) | |||||
| list(APPEND LAPACKE_REL_SRC ${ZSRC}) | list(APPEND LAPACKE_REL_SRC ${ZSRC}) | ||||
| endif () | endif () | ||||
| if (BUILD_MATGEN) | |||||
| list(APPEND LAPACKE_REL_SRC ${MATGEN}) | |||||
| endif () | |||||
| # add lapack-netlib folder to the sources | # add lapack-netlib folder to the sources | ||||
| set(LAPACKE_SOURCES "") | set(LAPACKE_SOURCES "") | ||||
| foreach (LAE_FILE ${LAPACKE_REL_SRC}) | foreach (LAE_FILE ${LAPACKE_REL_SRC}) | ||||
| @@ -3,19 +3,6 @@ | |||||
| ## Description: Ported from portion of OpenBLAS/Makefile.system | ## Description: Ported from portion of OpenBLAS/Makefile.system | ||||
| ## Detects the OS and sets appropriate variables. | ## 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") | if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") | ||||
| set(EXTRALIB "${EXTRALIB} -lm") | set(EXTRALIB "${EXTRALIB} -lm") | ||||
| set(NO_EXPRECISION 1) | set(NO_EXPRECISION 1) | ||||
| @@ -56,7 +43,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") | |||||
| # Ensure the correct stack alignment on Win32 | # Ensure the correct stack alignment on Win32 | ||||
| # http://permalink.gmane.org/gmane.comp.lib.openblas.general/97 | # 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") | if (NOT MSVC AND NOT ${CMAKE_C_COMPILER_ID} STREQUAL "Clang") | ||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2") | set(CCOMMON_OPT "${CCOMMON_OPT} -mincoming-stack-boundary=2") | ||||
| endif () | endif () | ||||
| @@ -78,7 +65,7 @@ if (CYGWIN) | |||||
| endif () | endif () | ||||
| if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Interix" AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Android") | 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") | set(EXTRALIB "${EXTRALIB} -lpthread") | ||||
| endif () | endif () | ||||
| endif () | endif () | ||||
| @@ -88,7 +75,7 @@ if (QUAD_PRECISION) | |||||
| set(NO_EXPRECISION 1) | set(NO_EXPRECISION 1) | ||||
| endif () | endif () | ||||
| if (${ARCH} STREQUAL "x86") | |||||
| if (X86) | |||||
| set(NO_EXPRECISION 1) | set(NO_EXPRECISION 1) | ||||
| endif () | endif () | ||||
| @@ -37,123 +37,208 @@ | |||||
| # CPUIDEMU = ../../cpuid/table.o | # CPUIDEMU = ../../cpuid/table.o | ||||
| if (DEFINED CPUIDEMU) | if (DEFINED CPUIDEMU) | ||||
| set(EXFLAGS "-DCPUIDEMU -DVENDOR=99") | set(EXFLAGS "-DCPUIDEMU -DVENDOR=99") | ||||
| endif () | endif () | ||||
| if (DEFINED TARGET_CORE) | |||||
| if (BUILD_KERNEL) | |||||
| # set the C flags for just this file | # set the C flags for just this file | ||||
| set(GETARCH2_FLAGS "-DBUILD_KERNEL") | set(GETARCH2_FLAGS "-DBUILD_KERNEL") | ||||
| set(TARGET_MAKE "Makefile_kernel.conf") | |||||
| set(TARGET_CONF "config_kernel.h") | set(TARGET_CONF "config_kernel.h") | ||||
| set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE}) | set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}/kernel_config/${TARGET_CORE}) | ||||
| else() | else() | ||||
| set(TARGET_MAKE "Makefile.conf") | |||||
| set(TARGET_CONF "config.h") | set(TARGET_CONF "config.h") | ||||
| set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}) | set(TARGET_CONF_DIR ${PROJECT_BINARY_DIR}) | ||||
| endif () | endif () | ||||
| set(TARGET_CONF_TEMP "${PROJECT_BINARY_DIR}/${TARGET_CONF}.tmp") | 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 () | 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 () | 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 () | 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 () | ||||
| 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 () | ||||
| 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") | 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. | # TARGET_CORE will override TARGET which is used in DYNAMIC_ARCH=1. | ||||
| if (DEFINED TARGET_CORE) | if (DEFINED TARGET_CORE) | ||||
| @@ -27,7 +42,7 @@ if (DEFINED BINARY AND DEFINED TARGET AND BINARY EQUAL 32) | |||||
| endif () | endif () | ||||
| if (DEFINED TARGET) | if (DEFINED TARGET) | ||||
| message(STATUS "Targetting the ${TARGET} architecture.") | |||||
| message(STATUS "Targeting the ${TARGET} architecture.") | |||||
| set(GETARCH_FLAGS "-DFORCE_${TARGET}") | set(GETARCH_FLAGS "-DFORCE_${TARGET}") | ||||
| endif () | endif () | ||||
| @@ -52,21 +67,16 @@ if (NO_AVX2) | |||||
| set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_AVX2") | set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_AVX2") | ||||
| endif () | 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 () | endif () | ||||
| # TODO: let CMake handle this? -hpa | |||||
| #if (${QUIET_MAKE}) | |||||
| # set(MAKE "${MAKE} -s") | |||||
| #endif() | |||||
| if (NOT DEFINED NO_PARALLEL_MAKE) | if (NOT DEFINED NO_PARALLEL_MAKE) | ||||
| set(NO_PARALLEL_MAKE 0) | set(NO_PARALLEL_MAKE 0) | ||||
| endif () | endif () | ||||
| set(GETARCH_FLAGS "${GETARCH_FLAGS} -DNO_PARALLEL_MAKE=${NO_PARALLEL_MAKE}") | 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") | set(GETARCH_FLAGS "${GETARCH_FLAGS} -static") | ||||
| endif () | endif () | ||||
| @@ -77,51 +87,40 @@ else () | |||||
| set(ONLY_CBLAS 0) | set(ONLY_CBLAS 0) | ||||
| endif () | 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) | 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) | set(USE_THREAD 0) | ||||
| elseif(NOT DEFINED USE_THREAD) | |||||
| set(USE_THREAD 1) | |||||
| endif () | 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 () | endif () | ||||
| if (${SMP}) | |||||
| message(STATUS "SMP enabled.") | |||||
| endif () | |||||
| include("${PROJECT_SOURCE_DIR}/cmake/prebuild.cmake") | |||||
| if (NOT DEFINED NEED_PIC) | if (NOT DEFINED NEED_PIC) | ||||
| set(NEED_PIC 1) | set(NEED_PIC 1) | ||||
| endif () | 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 | # OS dependent settings | ||||
| include("${PROJECT_SOURCE_DIR}/cmake/os.cmake") | include("${PROJECT_SOURCE_DIR}/cmake/os.cmake") | ||||
| @@ -149,11 +148,13 @@ if (NEED_PIC) | |||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -fPIC") | set(CCOMMON_OPT "${CCOMMON_OPT} -fPIC") | ||||
| endif () | 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 () | endif () | ||||
| if (DYNAMIC_ARCH) | if (DYNAMIC_ARCH) | ||||
| @@ -174,7 +175,7 @@ if (NO_AVX) | |||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX") | set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX") | ||||
| endif () | endif () | ||||
| if (${ARCH} STREQUAL "x86") | |||||
| if (X86) | |||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX") | set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX") | ||||
| endif () | endif () | ||||
| @@ -182,25 +183,20 @@ if (NO_AVX2) | |||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX2") | set(CCOMMON_OPT "${CCOMMON_OPT} -DNO_AVX2") | ||||
| endif () | endif () | ||||
| if (SMP) | |||||
| if (USE_THREAD) | |||||
| # USE_SIMPLE_THREADED_LEVEL3 = 1 | |||||
| # NO_AFFINITY = 1 | |||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER") | set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER") | ||||
| if (${ARCH} STREQUAL "mips64") | |||||
| if (MIPS64) | |||||
| if (NOT ${CORE} STREQUAL "LOONGSON3B") | if (NOT ${CORE} STREQUAL "LOONGSON3B") | ||||
| set(USE_SIMPLE_THREADED_LEVEL3 1) | set(USE_SIMPLE_THREADED_LEVEL3 1) | ||||
| endif () | endif () | ||||
| endif () | endif () | ||||
| if (USE_OPENMP) | |||||
| # USE_SIMPLE_THREADED_LEVEL3 = 1 | |||||
| # NO_AFFINITY = 1 | |||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_OPENMP") | |||||
| endif () | |||||
| if (BIGNUMA) | if (BIGNUMA) | ||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DBIGNUMA") | set(CCOMMON_OPT "${CCOMMON_OPT} -DBIGNUMA") | ||||
| endif () | endif () | ||||
| endif () | endif () | ||||
| if (NO_WARMUP) | if (NO_WARMUP) | ||||
| @@ -263,7 +259,7 @@ if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Linux") | |||||
| set(NO_AFFINITY 1) | set(NO_AFFINITY 1) | ||||
| endif () | 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) | set(NO_AFFINITY 1) | ||||
| endif () | endif () | ||||
| @@ -295,52 +291,19 @@ if (MIXED_MEMORY_ALLOCATION) | |||||
| set(CCOMMON_OPT "${CCOMMON_OPT} -DMIXED_MEMORY_ALLOCATION") | set(CCOMMON_OPT "${CCOMMON_OPT} -DMIXED_MEMORY_ALLOCATION") | ||||
| endif () | 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(REVISION "-r${OpenBLAS_VERSION}") | ||||
| set(MAJOR_VERSION ${OpenBLAS_MAJOR_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) | if(NOT MSVC) | ||||
| set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${COMMON_OPT} ${CCOMMON_OPT}") | |||||
| set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} ${CCOMMON_OPT}") | |||||
| endif() | endif() | ||||
| # TODO: not sure what PFLAGS is -hpa | # 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 | # 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. | #For LAPACK Fortran codes. | ||||
| set(LAPACK_FFLAGS "${LAPACK_FFLAGS} ${CMAKE_Fortran_FLAGS}") | 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. | #Disable -fopenmp for LAPACK Fortran codes on Windows. | ||||
| if (${CMAKE_SYSTEM_NAME} STREQUAL "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}) | foreach (FILTER_FLAG ${FILTER_FLAGS}) | ||||
| string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS}) | string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS}) | ||||
| string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS}) | string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS}) | ||||
| @@ -386,7 +349,7 @@ if (NOT DEFINED LIBSUFFIX) | |||||
| endif () | endif () | ||||
| if (DYNAMIC_ARCH) | if (DYNAMIC_ARCH) | ||||
| if (DEFINED SMP) | |||||
| if (USE_THREAD) | |||||
| set(LIBNAME "${LIBPREFIX}p${REVISION}.${LIBSUFFIX}") | set(LIBNAME "${LIBPREFIX}p${REVISION}.${LIBSUFFIX}") | ||||
| set(LIBNAME_P "${LIBPREFIX}p${REVISION}_p.${LIBSUFFIX}") | set(LIBNAME_P "${LIBPREFIX}p${REVISION}_p.${LIBSUFFIX}") | ||||
| else () | else () | ||||
| @@ -394,7 +357,7 @@ if (DYNAMIC_ARCH) | |||||
| set(LIBNAME_P "${LIBPREFIX}${REVISION}_p.${LIBSUFFIX}") | set(LIBNAME_P "${LIBPREFIX}${REVISION}_p.${LIBSUFFIX}") | ||||
| endif () | endif () | ||||
| else () | else () | ||||
| if (DEFINED SMP) | |||||
| if (USE_THREAD) | |||||
| set(LIBNAME "${LIBPREFIX}_${LIBCORE}p${REVISION}.${LIBSUFFIX}") | set(LIBNAME "${LIBPREFIX}_${LIBCORE}p${REVISION}.${LIBSUFFIX}") | ||||
| set(LIBNAME_P "${LIBPREFIX}_${LIBCORE}p${REVISION}_p.${LIBSUFFIX}") | set(LIBNAME_P "${LIBPREFIX}_${LIBCORE}p${REVISION}_p.${LIBSUFFIX}") | ||||
| else () | else () | ||||
| @@ -425,6 +388,9 @@ if (NOT NO_LAPACK) | |||||
| if (NOT NO_LAPACKE) | if (NOT NO_LAPACKE) | ||||
| set(LIB_COMPONENTS "${LIB_COMPONENTS} LAPACKE") | set(LIB_COMPONENTS "${LIB_COMPONENTS} LAPACKE") | ||||
| endif () | endif () | ||||
| if (BUILD_RELAPACK) | |||||
| set(LIB_COMPONENTS "${LIB_COMPONENTS} ReLAPACK") | |||||
| endif () | |||||
| endif () | endif () | ||||
| if (ONLY_CBLAS) | if (ONLY_CBLAS) | ||||
| @@ -436,7 +402,7 @@ endif () | |||||
| set(USE_GEMM3M 0) | set(USE_GEMM3M 0) | ||||
| if (DEFINED ARCH) | 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) | set(USE_GEMM3M 1) | ||||
| endif () | endif () | ||||
| @@ -519,35 +485,3 @@ endif () | |||||
| # export CUFLAGS | # export CUFLAGS | ||||
| # export CULIB | # export CULIB | ||||
| #endif | #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 (*sgeadd_k) (BLASLONG, BLASLONG, float, float *, BLASLONG, float, float *, BLASLONG); | ||||
| int (*dgeadd_k) (BLASLONG, BLASLONG, double, double *, BLASLONG, double, double *, 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 (*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; | } 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_LOONGSON3B 3 | ||||
| #define CPU_I6400 4 | #define CPU_I6400 4 | ||||
| #define CPU_P6600 5 | #define CPU_P6600 5 | ||||
| #define CPU_I6500 6 | |||||
| static char *cpuname[] = { | static char *cpuname[] = { | ||||
| "UNKOWN", | "UNKOWN", | ||||
| @@ -83,7 +84,8 @@ static char *cpuname[] = { | |||||
| "LOONGSON3A", | "LOONGSON3A", | ||||
| "LOONGSON3B", | "LOONGSON3B", | ||||
| "I6400", | "I6400", | ||||
| "P6600" | |||||
| "P6600", | |||||
| "I6500" | |||||
| }; | }; | ||||
| int detect(void){ | int detect(void){ | ||||
| @@ -165,6 +167,8 @@ void get_subarchitecture(void){ | |||||
| printf("I6400"); | printf("I6400"); | ||||
| }else if(detect()==CPU_P6600){ | }else if(detect()==CPU_P6600){ | ||||
| printf("P6600"); | printf("P6600"); | ||||
| }else if(detect()==CPU_I6500){ | |||||
| printf("I6500"); | |||||
| }else{ | }else{ | ||||
| printf("SICORTEX"); | printf("SICORTEX"); | ||||
| } | } | ||||
| @@ -211,6 +215,15 @@ void get_cpuconfig(void){ | |||||
| printf("#define DTB_DEFAULT_ENTRIES 64\n"); | printf("#define DTB_DEFAULT_ENTRIES 64\n"); | ||||
| printf("#define DTB_SIZE 4096\n"); | printf("#define DTB_SIZE 4096\n"); | ||||
| printf("#define L2_ASSOCIATIVE 8\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{ | }else{ | ||||
| printf("#define SICORTEX\n"); | printf("#define SICORTEX\n"); | ||||
| printf("#define L1_DATA_SIZE 32768\n"); | printf("#define L1_DATA_SIZE 32768\n"); | ||||
| @@ -232,6 +245,8 @@ void get_libname(void){ | |||||
| printf("i6400\n"); | printf("i6400\n"); | ||||
| }else if(detect()==CPU_P6600) { | }else if(detect()==CPU_P6600) { | ||||
| printf("p6600\n"); | printf("p6600\n"); | ||||
| }else if(detect()==CPU_I6500) { | |||||
| printf("i6500\n"); | |||||
| }else{ | }else{ | ||||
| printf("mips64\n"); | printf("mips64\n"); | ||||
| } | } | ||||
| @@ -49,6 +49,7 @@ void get_subdirname(void){ | |||||
| } | } | ||||
| void get_cpuconfig(void){ | void get_cpuconfig(void){ | ||||
| printf("#define SPARC\n"); | |||||
| printf("#define V9\n"); | printf("#define V9\n"); | ||||
| printf("#define DTB_DEFAULT_ENTRIES 32\n"); | printf("#define DTB_DEFAULT_ENTRIES 32\n"); | ||||
| } | } | ||||
| @@ -16,7 +16,7 @@ foreach(float_type ${FLOAT_TYPES}) | |||||
| add_executable(x${float_char}cblat1 | add_executable(x${float_char}cblat1 | ||||
| c_${float_char}blat1.f | c_${float_char}blat1.f | ||||
| c_${float_char}blas1.c) | 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" | add_test(NAME "x${float_char}cblat1" | ||||
| COMMAND "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat1") | COMMAND "${CMAKE_CURRENT_BINARY_DIR}/x${float_char}cblat1") | ||||
| @@ -28,7 +28,7 @@ foreach(float_type ${FLOAT_TYPES}) | |||||
| auxiliary.c | auxiliary.c | ||||
| c_xerbla.c | c_xerbla.c | ||||
| constant.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" | 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") | 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 | auxiliary.c | ||||
| c_xerbla.c | c_xerbla.c | ||||
| constant.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" | 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") | 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 "common.h" | ||||
| #include "cblas_test.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) | const int *incX, void *Y, const int *incY) | ||||
| { | { | ||||
| cblas_caxpy(*N, alpha, X, *incX, Y, *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; | 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); | if (*N < 1 || *incX < 1) return(0); | ||||
| return (cblas_icamax(*N, X, *incX)+1); | 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); | return cblas_scnrm2(*N, X, *incX); | ||||
| } | } | ||||
| @@ -9,9 +9,9 @@ | |||||
| #include "cblas_test.h" | #include "cblas_test.h" | ||||
| void F77_cgemv(int *order, char *transp, int *m, int *n, | 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; | CBLAS_TEST_COMPLEX *A; | ||||
| int i,j,LDA; | int i,j,LDA; | ||||
| @@ -349,13 +349,13 @@ | |||||
| CALL CCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL CCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | ||||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | ||||
| $ 0 ) | |||||
| $ 0 ) | |||||
| END IF | END IF | ||||
| IF (RORDER) THEN | IF (RORDER) THEN | ||||
| CALL CCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL CCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | ||||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | ||||
| $ 1 ) | |||||
| $ 1 ) | |||||
| END IF | END IF | ||||
| GO TO 200 | GO TO 200 | ||||
| * Test CGERC, 12, CGERU, 13. | * Test CGERC, 12, CGERU, 13. | ||||
| @@ -2660,7 +2660,7 @@ | |||||
| 50 CONTINUE | 50 CONTINUE | ||||
| END IF | END IF | ||||
| * | * | ||||
| 60 CONTINUE | |||||
| C 60 CONTINUE | |||||
| LCERES = .TRUE. | LCERES = .TRUE. | ||||
| GO TO 80 | GO TO 80 | ||||
| 70 CONTINUE | 70 CONTINUE | ||||
| @@ -329,13 +329,13 @@ | |||||
| CALL CCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL CCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | ||||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | ||||
| $ 0 ) | |||||
| $ 0 ) | |||||
| END IF | END IF | ||||
| IF (RORDER) THEN | IF (RORDER) THEN | ||||
| CALL CCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL CCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | ||||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | ||||
| $ 1 ) | |||||
| $ 1 ) | |||||
| END IF | END IF | ||||
| GO TO 190 | GO TO 190 | ||||
| * Test CHERK, 06, CSYRK, 07. | * Test CHERK, 06, CSYRK, 07. | ||||
| @@ -357,13 +357,13 @@ | |||||
| CALL CCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL CCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | ||||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | ||||
| $ 0 ) | |||||
| $ 0 ) | |||||
| END IF | END IF | ||||
| IF (RORDER) THEN | IF (RORDER) THEN | ||||
| CALL CCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL CCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | ||||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | ||||
| $ 1 ) | |||||
| $ 1 ) | |||||
| END IF | END IF | ||||
| GO TO 190 | GO TO 190 | ||||
| * | * | ||||
| @@ -707,9 +707,9 @@ | |||||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1033,9 +1033,9 @@ | |||||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1385,9 +1385,9 @@ | |||||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT(' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1768,12 +1768,12 @@ | |||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 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 *', | 9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -2221,12 +2221,12 @@ | |||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 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 *', | 9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -2702,7 +2702,7 @@ | |||||
| 50 CONTINUE | 50 CONTINUE | ||||
| END IF | END IF | ||||
| * | * | ||||
| 60 CONTINUE | |||||
| C 60 CONTINUE | |||||
| LCERES = .TRUE. | LCERES = .TRUE. | ||||
| GO TO 80 | GO TO 80 | ||||
| 70 CONTINUE | 70 CONTINUE | ||||
| @@ -14,7 +14,7 @@ double F77_dasum(const int *N, double *X, const int *incX) | |||||
| return cblas_dasum(*N, X, *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) | const int *incX, double *Y, const int *incY) | ||||
| { | { | ||||
| cblas_daxpy(*N, *alpha, X, *incX, Y, *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; | 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); | 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); | 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); | 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); | 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); | if (*N < 1 || *incX < 1) return(0); | ||||
| return (cblas_idamax(*N, X, *incX)+1); | return (cblas_idamax(*N, X, *incX)+1); | ||||
| @@ -211,11 +211,11 @@ | |||||
| IF (ICASE.EQ.7) THEN | IF (ICASE.EQ.7) THEN | ||||
| * .. DNRM2TEST .. | * .. DNRM2TEST .. | ||||
| STEMP(1) = DTRUE1(NP1) | 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 | ELSE IF (ICASE.EQ.8) THEN | ||||
| * .. DASUMTEST .. | * .. DASUMTEST .. | ||||
| STEMP(1) = DTRUE3(NP1) | 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 | ELSE IF (ICASE.EQ.9) THEN | ||||
| * .. DSCALTEST .. | * .. DSCALTEST .. | ||||
| CALL DSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX) | CALL DSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX) | ||||
| @@ -345,13 +345,13 @@ | |||||
| CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | ||||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | ||||
| $ 0 ) | |||||
| $ 0 ) | |||||
| END IF | END IF | ||||
| IF (RORDER) THEN | IF (RORDER) THEN | ||||
| CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | ||||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | ||||
| $ 1 ) | |||||
| $ 1 ) | |||||
| END IF | END IF | ||||
| GO TO 200 | GO TO 200 | ||||
| * Test DGER, 12. | * Test DGER, 12. | ||||
| @@ -797,9 +797,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', 4( I3, ',' ), F4.1, | 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', 4( I3, ',' ), F4.1, | ||||
| $ ', A,', I3, ',',/ 10x,'X,', I2, ',', F4.1, ', Y,', | $ ', A,', I3, ',',/ 10x,'X,', I2, ',', F4.1, ', Y,', | ||||
| @@ -1004,7 +1004,7 @@ | |||||
| $ REWIND NTRA | $ REWIND NTRA | ||||
| CALL CDSBMV( IORDER, UPLO, N, K, ALPHA, | CALL CDSBMV( IORDER, UPLO, N, K, ALPHA, | ||||
| $ AA, LDA, XX, INCX, BETA, YY, | $ AA, LDA, XX, INCX, BETA, YY, | ||||
| $ INCY ) | |||||
| $ INCY ) | |||||
| ELSE IF( PACKED )THEN | ELSE IF( PACKED )THEN | ||||
| IF( TRACE ) | IF( TRACE ) | ||||
| $ WRITE( NTRA, FMT = 9995 )NC, SNAME, | $ WRITE( NTRA, FMT = 9995 )NC, SNAME, | ||||
| @@ -1156,9 +1156,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', AP', | 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', AP', | ||||
| $ ', X,', I2, ',', F4.1, ', Y,', I2, ') .' ) | $ ', X,', I2, ',', F4.1, ', Y,', I2, ') .' ) | ||||
| @@ -1191,7 +1191,7 @@ | |||||
| * .. Scalar Arguments .. | * .. Scalar Arguments .. | ||||
| DOUBLE PRECISION EPS, THRESH | DOUBLE PRECISION EPS, THRESH | ||||
| INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA, | INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA, | ||||
| $ IORDER | |||||
| $ IORDER | |||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | CHARACTER*12 SNAME | ||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| @@ -1216,7 +1216,7 @@ | |||||
| EXTERNAL LDE, LDERES | EXTERNAL LDE, LDERES | ||||
| * .. External Subroutines .. | * .. External Subroutines .. | ||||
| EXTERNAL DMAKE, DMVCH, CDTBMV, CDTBSV, CDTPMV, | EXTERNAL DMAKE, DMVCH, CDTBMV, CDTBSV, CDTPMV, | ||||
| $ CDTPSV, CDTRMV, CDTRSV | |||||
| $ CDTPSV, CDTRMV, CDTRSV | |||||
| * .. Intrinsic Functions .. | * .. Intrinsic Functions .. | ||||
| INTRINSIC ABS, MAX | INTRINSIC ABS, MAX | ||||
| * .. Scalars in Common .. | * .. Scalars in Common .. | ||||
| @@ -1544,9 +1544,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', 3( A14,',' ),/ 10x, I3, ', AP, ', | 9995 FORMAT( 1X, I6, ': ',A12, '(', 3( A14,',' ),/ 10x, I3, ', AP, ', | ||||
| $ 'X,', I2, ') .' ) | $ 'X,', I2, ') .' ) | ||||
| @@ -1579,7 +1579,7 @@ | |||||
| * .. Scalar Arguments .. | * .. Scalar Arguments .. | ||||
| DOUBLE PRECISION EPS, THRESH | DOUBLE PRECISION EPS, THRESH | ||||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | ||||
| $ IORDER | |||||
| $ IORDER | |||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | CHARACTER*12 SNAME | ||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| @@ -1819,9 +1819,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | ||||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', 2( I3, ',' ), F4.1, ', X,', I2, | 9994 FORMAT( 1X, I6, ': ',A12, '(', 2( I3, ',' ), F4.1, ', X,', I2, | ||||
| @@ -1851,7 +1851,7 @@ | |||||
| * .. Scalar Arguments .. | * .. Scalar Arguments .. | ||||
| DOUBLE PRECISION EPS, THRESH | DOUBLE PRECISION EPS, THRESH | ||||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | ||||
| $ IORDER | |||||
| $ IORDER | |||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | CHARACTER*12 SNAME | ||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| @@ -1973,7 +1973,7 @@ | |||||
| IF( REWI ) | IF( REWI ) | ||||
| $ REWIND NTRA | $ REWIND NTRA | ||||
| CALL CDSYR( IORDER, UPLO, N, ALPHA, XX, INCX, | CALL CDSYR( IORDER, UPLO, N, ALPHA, XX, INCX, | ||||
| $ AA, LDA ) | |||||
| $ AA, LDA ) | |||||
| ELSE IF( PACKED )THEN | ELSE IF( PACKED )THEN | ||||
| IF( TRACE ) | IF( TRACE ) | ||||
| $ WRITE( NTRA, FMT = 9994 )NC, SNAME, CUPLO, N, | $ WRITE( NTRA, FMT = 9994 )NC, SNAME, CUPLO, N, | ||||
| @@ -2113,9 +2113,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | ||||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | ||||
| @@ -2147,7 +2147,7 @@ | |||||
| * .. Scalar Arguments .. | * .. Scalar Arguments .. | ||||
| DOUBLE PRECISION EPS, THRESH | DOUBLE PRECISION EPS, THRESH | ||||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | ||||
| $ IORDER | |||||
| $ IORDER | |||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | CHARACTER*12 SNAME | ||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| @@ -2445,9 +2445,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | ||||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | ||||
| @@ -2833,7 +2833,7 @@ | |||||
| 50 CONTINUE | 50 CONTINUE | ||||
| END IF | END IF | ||||
| * | * | ||||
| 60 CONTINUE | |||||
| C 60 CONTINUE | |||||
| LDERES = .TRUE. | LDERES = .TRUE. | ||||
| GO TO 80 | GO TO 80 | ||||
| 70 CONTINUE | 70 CONTINUE | ||||
| @@ -56,7 +56,7 @@ | |||||
| * .. Local Scalars .. | * .. Local Scalars .. | ||||
| DOUBLE PRECISION EPS, ERR, THRESH | DOUBLE PRECISION EPS, ERR, THRESH | ||||
| INTEGER I, ISNUM, J, N, NALF, NBET, NIDIM, NTRA, | INTEGER I, ISNUM, J, N, NALF, NBET, NIDIM, NTRA, | ||||
| $ LAYOUT | |||||
| $ LAYOUT | |||||
| LOGICAL FATAL, LTESTT, REWI, SAME, SFATAL, TRACE, | LOGICAL FATAL, LTESTT, REWI, SAME, SFATAL, TRACE, | ||||
| $ TSTERR, CORDER, RORDER | $ TSTERR, CORDER, RORDER | ||||
| CHARACTER*1 TRANSA, TRANSB | CHARACTER*1 TRANSA, TRANSB | ||||
| @@ -78,7 +78,7 @@ | |||||
| EXTERNAL DDIFF, LDE | EXTERNAL DDIFF, LDE | ||||
| * .. External Subroutines .. | * .. External Subroutines .. | ||||
| EXTERNAL DCHK1, DCHK2, DCHK3, DCHK4, DCHK5, CD3CHKE, | EXTERNAL DCHK1, DCHK2, DCHK3, DCHK4, DCHK5, CD3CHKE, | ||||
| $ DMMCH | |||||
| $ DMMCH | |||||
| * .. Intrinsic Functions .. | * .. Intrinsic Functions .. | ||||
| INTRINSIC MAX, MIN | INTRINSIC MAX, MIN | ||||
| * .. Scalars in Common .. | * .. Scalars in Common .. | ||||
| @@ -323,13 +323,13 @@ | |||||
| CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | ||||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | ||||
| $ 0 ) | |||||
| $ 0 ) | |||||
| END IF | END IF | ||||
| IF (RORDER) THEN | IF (RORDER) THEN | ||||
| CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL DCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | ||||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | ||||
| $ 1 ) | |||||
| $ 1 ) | |||||
| END IF | END IF | ||||
| GO TO 190 | GO TO 190 | ||||
| * Test DSYRK, 05. | * Test DSYRK, 05. | ||||
| @@ -351,13 +351,13 @@ | |||||
| CALL DCHK5( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL DCHK5( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | ||||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | ||||
| $ 0 ) | |||||
| $ 0 ) | |||||
| END IF | END IF | ||||
| IF (RORDER) THEN | IF (RORDER) THEN | ||||
| CALL DCHK5( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL DCHK5( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | ||||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | ||||
| $ 1 ) | |||||
| $ 1 ) | |||||
| END IF | END IF | ||||
| GO TO 190 | GO TO 190 | ||||
| * | * | ||||
| @@ -588,7 +588,7 @@ | |||||
| $ REWIND NTRA | $ REWIND NTRA | ||||
| CALL CDGEMM( IORDER, TRANSA, TRANSB, M, N, | CALL CDGEMM( IORDER, TRANSA, TRANSB, M, N, | ||||
| $ K, ALPHA, AA, LDA, BB, LDB, | $ K, ALPHA, AA, LDA, BB, LDB, | ||||
| $ BETA, CC, LDC ) | |||||
| $ BETA, CC, LDC ) | |||||
| * | * | ||||
| * Check if error-exit was taken incorrectly. | * Check if error-exit was taken incorrectly. | ||||
| * | * | ||||
| @@ -694,9 +694,9 @@ | |||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1007,9 +1007,9 @@ | |||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1201,7 +1201,7 @@ | |||||
| $ REWIND NTRA | $ REWIND NTRA | ||||
| CALL CDTRMM( IORDER, SIDE, UPLO, TRANSA, | CALL CDTRMM( IORDER, SIDE, UPLO, TRANSA, | ||||
| $ DIAG, M, N, ALPHA, AA, LDA, | $ DIAG, M, N, ALPHA, AA, LDA, | ||||
| $ BB, LDB ) | |||||
| $ BB, LDB ) | |||||
| ELSE IF( SNAME( 10: 11 ).EQ.'sm' )THEN | ELSE IF( SNAME( 10: 11 ).EQ.'sm' )THEN | ||||
| IF( TRACE ) | IF( TRACE ) | ||||
| $ CALL DPRCN3( NTRA, NC, SNAME, IORDER, | $ CALL DPRCN3( NTRA, NC, SNAME, IORDER, | ||||
| @@ -1211,7 +1211,7 @@ | |||||
| $ REWIND NTRA | $ REWIND NTRA | ||||
| CALL CDTRSM( IORDER, SIDE, UPLO, TRANSA, | CALL CDTRSM( IORDER, SIDE, UPLO, TRANSA, | ||||
| $ DIAG, M, N, ALPHA, AA, LDA, | $ DIAG, M, N, ALPHA, AA, LDA, | ||||
| $ BB, LDB ) | |||||
| $ BB, LDB ) | |||||
| END IF | END IF | ||||
| * | * | ||||
| * Check if error-exit was taken incorrectly. | * Check if error-exit was taken incorrectly. | ||||
| @@ -1355,8 +1355,8 @@ | |||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1681,8 +1681,8 @@ | |||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 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 *', | 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1726,7 +1726,7 @@ | |||||
| SUBROUTINE DCHK5( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, | SUBROUTINE DCHK5( SNAME, EPS, THRESH, NOUT, NTRA, TRACE, REWI, | ||||
| $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX, | $ FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, NMAX, | ||||
| $ AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | $ AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | ||||
| $ IORDER ) | |||||
| $ IORDER ) | |||||
| * | * | ||||
| * Tests DSYR2K. | * Tests DSYR2K. | ||||
| * | * | ||||
| @@ -1888,7 +1888,7 @@ | |||||
| $ REWIND NTRA | $ REWIND NTRA | ||||
| CALL CDSYR2K( IORDER, UPLO, TRANS, N, K, | CALL CDSYR2K( IORDER, UPLO, TRANS, N, K, | ||||
| $ ALPHA, AA, LDA, BB, LDB, BETA, | $ ALPHA, AA, LDA, BB, LDB, BETA, | ||||
| $ CC, LDC ) | |||||
| $ CC, LDC ) | |||||
| * | * | ||||
| * Check if error-exit was taken incorrectly. | * Check if error-exit was taken incorrectly. | ||||
| * | * | ||||
| @@ -2037,9 +2037,9 @@ | |||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 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 *', | 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -2399,7 +2399,7 @@ | |||||
| 50 CONTINUE | 50 CONTINUE | ||||
| END IF | END IF | ||||
| * | * | ||||
| 60 CONTINUE | |||||
| C 60 CONTINUE | |||||
| LDERES = .TRUE. | LDERES = .TRUE. | ||||
| GO TO 80 | GO TO 80 | ||||
| 70 CONTINUE | 70 CONTINUE | ||||
| @@ -14,7 +14,7 @@ float F77_sasum(blasint *N, float *X, blasint *incX) | |||||
| return cblas_sasum(*N, X, *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) | blasint *incX, float *Y, blasint *incY) | ||||
| { | { | ||||
| cblas_saxpy(*N, *alpha, X, *incX, Y, *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); | 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); | 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) | float *Y, blasint *incY) | ||||
| { | { | ||||
| cblas_scopy(*N, X, *incX, Y, *incY); | cblas_scopy(*N, X, *incX, Y, *incY); | ||||
| return; | 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); | 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); | return cblas_snrm2(*N, X, *incX); | ||||
| } | } | ||||
| @@ -76,7 +76,7 @@ void F77_sswap( blasint *N, float *X, blasint *incX, | |||||
| return; | 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); | if (*N < 1 || *incX < 1) return(0); | ||||
| return (cblas_isamax(*N, X, *incX)+1); | return (cblas_isamax(*N, X, *incX)+1); | ||||
| @@ -211,11 +211,11 @@ | |||||
| IF (ICASE.EQ.7) THEN | IF (ICASE.EQ.7) THEN | ||||
| * .. SNRM2TEST .. | * .. SNRM2TEST .. | ||||
| STEMP(1) = DTRUE1(NP1) | 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 | ELSE IF (ICASE.EQ.8) THEN | ||||
| * .. SASUMTEST .. | * .. SASUMTEST .. | ||||
| STEMP(1) = DTRUE3(NP1) | 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 | ELSE IF (ICASE.EQ.9) THEN | ||||
| * .. SSCALTEST .. | * .. SSCALTEST .. | ||||
| CALL SSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX) | CALL SSCALTEST(N,SA((INCX-1)*5+NP1),SX,INCX) | ||||
| @@ -345,13 +345,13 @@ | |||||
| CALL SCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL SCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | ||||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | ||||
| $ 0 ) | |||||
| $ 0 ) | |||||
| END IF | END IF | ||||
| IF (RORDER) THEN | IF (RORDER) THEN | ||||
| CALL SCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL SCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | ||||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | ||||
| $ 1 ) | |||||
| $ 1 ) | |||||
| END IF | END IF | ||||
| GO TO 200 | GO TO 200 | ||||
| * Test SGER, 12. | * Test SGER, 12. | ||||
| @@ -797,9 +797,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', 4( I3, ',' ), F4.1, | 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', 4( I3, ',' ), F4.1, | ||||
| $ ', A,', I3, ',',/ 10x, 'X,', I2, ',', F4.1, ', Y,', | $ ', A,', I3, ',',/ 10x, 'X,', I2, ',', F4.1, ', Y,', | ||||
| @@ -1004,7 +1004,7 @@ | |||||
| $ REWIND NTRA | $ REWIND NTRA | ||||
| CALL CSSBMV( IORDER, UPLO, N, K, ALPHA, | CALL CSSBMV( IORDER, UPLO, N, K, ALPHA, | ||||
| $ AA, LDA, XX, INCX, BETA, YY, | $ AA, LDA, XX, INCX, BETA, YY, | ||||
| $ INCY ) | |||||
| $ INCY ) | |||||
| ELSE IF( PACKED )THEN | ELSE IF( PACKED )THEN | ||||
| IF( TRACE ) | IF( TRACE ) | ||||
| $ WRITE( NTRA, FMT = 9995 )NC, SNAME, | $ WRITE( NTRA, FMT = 9995 )NC, SNAME, | ||||
| @@ -1156,9 +1156,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', AP', | 9995 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', AP', | ||||
| $ ', X,', I2, ',', F4.1, ', Y,', I2, ') .' ) | $ ', X,', I2, ',', F4.1, ', Y,', I2, ') .' ) | ||||
| @@ -1191,7 +1191,7 @@ | |||||
| * .. Scalar Arguments .. | * .. Scalar Arguments .. | ||||
| REAL EPS, THRESH | REAL EPS, THRESH | ||||
| INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA, | INTEGER INCMAX, NIDIM, NINC, NKB, NMAX, NOUT, NTRA, | ||||
| $ IORDER | |||||
| $ IORDER | |||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | CHARACTER*12 SNAME | ||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| @@ -1216,7 +1216,7 @@ | |||||
| EXTERNAL LSE, LSERES | EXTERNAL LSE, LSERES | ||||
| * .. External Subroutines .. | * .. External Subroutines .. | ||||
| EXTERNAL SMAKE, SMVCH, CSTBMV, CSTBSV, CSTPMV, | EXTERNAL SMAKE, SMVCH, CSTBMV, CSTBSV, CSTPMV, | ||||
| $ CSTPSV, CSTRMV, CSTRSV | |||||
| $ CSTPSV, CSTRMV, CSTRSV | |||||
| * .. Intrinsic Functions .. | * .. Intrinsic Functions .. | ||||
| INTRINSIC ABS, MAX | INTRINSIC ABS, MAX | ||||
| * .. Scalars in Common .. | * .. Scalars in Common .. | ||||
| @@ -1544,9 +1544,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( 1X, I6, ': ',A12, '(', 3( A14,',' ),/ 10x, I3, ', AP, ', | 9995 FORMAT( 1X, I6, ': ',A12, '(', 3( A14,',' ),/ 10x, I3, ', AP, ', | ||||
| $ 'X,', I2, ') .' ) | $ 'X,', I2, ') .' ) | ||||
| @@ -1579,7 +1579,7 @@ | |||||
| * .. Scalar Arguments .. | * .. Scalar Arguments .. | ||||
| REAL EPS, THRESH | REAL EPS, THRESH | ||||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | ||||
| $ IORDER | |||||
| $ IORDER | |||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | CHARACTER*12 SNAME | ||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| @@ -1819,9 +1819,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | ||||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', 2( I3, ',' ), F4.1, ', X,', I2, | 9994 FORMAT( 1X, I6, ': ',A12, '(', 2( I3, ',' ), F4.1, ', X,', I2, | ||||
| @@ -1851,7 +1851,7 @@ | |||||
| * .. Scalar Arguments .. | * .. Scalar Arguments .. | ||||
| REAL EPS, THRESH | REAL EPS, THRESH | ||||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | ||||
| $ IORDER | |||||
| $ IORDER | |||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | CHARACTER*12 SNAME | ||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| @@ -1973,7 +1973,7 @@ | |||||
| IF( REWI ) | IF( REWI ) | ||||
| $ REWIND NTRA | $ REWIND NTRA | ||||
| CALL CSSYR( IORDER, UPLO, N, ALPHA, XX, INCX, | CALL CSSYR( IORDER, UPLO, N, ALPHA, XX, INCX, | ||||
| $ AA, LDA ) | |||||
| $ AA, LDA ) | |||||
| ELSE IF( PACKED )THEN | ELSE IF( PACKED )THEN | ||||
| IF( TRACE ) | IF( TRACE ) | ||||
| $ WRITE( NTRA, FMT = 9994 )NC, SNAME, CUPLO, N, | $ WRITE( NTRA, FMT = 9994 )NC, SNAME, CUPLO, N, | ||||
| @@ -2113,9 +2113,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | ||||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | ||||
| @@ -2147,7 +2147,7 @@ | |||||
| * .. Scalar Arguments .. | * .. Scalar Arguments .. | ||||
| REAL EPS, THRESH | REAL EPS, THRESH | ||||
| INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | INTEGER INCMAX, NALF, NIDIM, NINC, NMAX, NOUT, NTRA, | ||||
| $ IORDER | |||||
| $ IORDER | |||||
| LOGICAL FATAL, REWI, TRACE | LOGICAL FATAL, REWI, TRACE | ||||
| CHARACTER*12 SNAME | CHARACTER*12 SNAME | ||||
| * .. Array Arguments .. | * .. Array Arguments .. | ||||
| @@ -2445,9 +2445,9 @@ | |||||
| $ ' (', I6, ' CALL', 'S)' ) | $ ' (', I6, ' CALL', 'S)' ) | ||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ '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:' ) | 9996 FORMAT( ' ******* ',A12, ' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | ||||
| 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | 9994 FORMAT( 1X, I6, ': ',A12, '(', A14, ',', I3, ',', F4.1, ', X,', | ||||
| @@ -2833,7 +2833,7 @@ | |||||
| 50 CONTINUE | 50 CONTINUE | ||||
| END IF | END IF | ||||
| * | * | ||||
| 60 CONTINUE | |||||
| C 60 CONTINUE | |||||
| LSERES = .TRUE. | LSERES = .TRUE. | ||||
| GO TO 80 | GO TO 80 | ||||
| 70 CONTINUE | 70 CONTINUE | ||||
| @@ -694,9 +694,9 @@ | |||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1011,9 +1011,9 @@ | |||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1359,8 +1359,8 @@ | |||||
| 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT( ' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1686,8 +1686,8 @@ | |||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 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 *', | 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -2041,9 +2041,9 @@ | |||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 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 *', | 9993 FORMAT( ' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -2403,7 +2403,7 @@ | |||||
| 50 CONTINUE | 50 CONTINUE | ||||
| END IF | END IF | ||||
| * | * | ||||
| 60 CONTINUE | |||||
| C 60 CONTINUE | |||||
| LSERES = .TRUE. | LSERES = .TRUE. | ||||
| GO TO 80 | GO TO 80 | ||||
| 70 CONTINUE | 70 CONTINUE | ||||
| @@ -131,7 +131,7 @@ void F77_xerbla(char *srname, void *vinfo) | |||||
| int BLASFUNC(xerbla)(char *name, blasint *info, blasint length) { | int BLASFUNC(xerbla)(char *name, blasint *info, blasint length) { | ||||
| F77_xerbla(name, info); | F77_xerbla(name, info); | ||||
| return 0; | |||||
| }; | }; | ||||
| @@ -9,7 +9,7 @@ | |||||
| #include "common.h" | #include "common.h" | ||||
| #include "cblas_test.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) | const int *incX, void *Y, const int *incY) | ||||
| { | { | ||||
| cblas_zaxpy(*N, alpha, X, *incX, Y, *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; | 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); | cblas_zdotc_sub(*N, X, *incX, Y, *incY, dotc); | ||||
| return; | return; | ||||
| @@ -58,13 +58,13 @@ void F77_zswap( const int *N, void *X, const int *incX, | |||||
| return; | 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); | if (*N < 1 || *incX < 1) return(0); | ||||
| return(cblas_izamax(*N, X, *incX)+1); | 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); | return cblas_dznrm2(*N, X, *incX); | ||||
| } | } | ||||
| @@ -9,9 +9,9 @@ | |||||
| #include "cblas_test.h" | #include "cblas_test.h" | ||||
| void F77_zgemv(int *order, char *transp, int *m, int *n, | 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; | CBLAS_TEST_ZOMPLEX *A; | ||||
| int i,j,LDA; | int i,j,LDA; | ||||
| @@ -349,13 +349,13 @@ | |||||
| CALL ZCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL ZCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | ||||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | ||||
| $ 0 ) | |||||
| $ 0 ) | |||||
| END IF | END IF | ||||
| IF (RORDER) THEN | IF (RORDER) THEN | ||||
| CALL ZCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL ZCHK3( SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | $ REWI, FATAL, NIDIM, IDIM, NKB, KB, NINC, INC, | ||||
| $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | $ NMAX, INCMAX, A, AA, AS, Y, YY, YS, YT, G, Z, | ||||
| $ 1 ) | |||||
| $ 1 ) | |||||
| END IF | END IF | ||||
| GO TO 200 | GO TO 200 | ||||
| * Test ZGERC, 12, ZGERU, 13. | * Test ZGERC, 12, ZGERU, 13. | ||||
| @@ -330,13 +330,13 @@ | |||||
| CALL ZCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL ZCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | ||||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | ||||
| $ 0 ) | |||||
| $ 0 ) | |||||
| END IF | END IF | ||||
| IF (RORDER) THEN | IF (RORDER) THEN | ||||
| CALL ZCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL ZCHK3(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NMAX, AB, | ||||
| $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | $ AA, AS, AB( 1, NMAX + 1 ), BB, BS, CT, G, C, | ||||
| $ 1 ) | |||||
| $ 1 ) | |||||
| END IF | END IF | ||||
| GO TO 190 | GO TO 190 | ||||
| * Test ZHERK, 06, ZSYRK, 07. | * Test ZHERK, 06, ZSYRK, 07. | ||||
| @@ -358,13 +358,13 @@ | |||||
| CALL ZCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL ZCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | ||||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | ||||
| $ 0 ) | |||||
| $ 0 ) | |||||
| END IF | END IF | ||||
| IF (RORDER) THEN | IF (RORDER) THEN | ||||
| CALL ZCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | CALL ZCHK5(SNAMES( ISNUM ), EPS, THRESH, NOUT, NTRA, TRACE, | ||||
| $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | $ REWI, FATAL, NIDIM, IDIM, NALF, ALF, NBET, BET, | ||||
| $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | $ NMAX, AB, AA, AS, BB, BS, C, CC, CS, CT, G, W, | ||||
| $ 1 ) | |||||
| $ 1 ) | |||||
| END IF | END IF | ||||
| GO TO 190 | GO TO 190 | ||||
| * | * | ||||
| @@ -708,9 +708,9 @@ | |||||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1034,9 +1034,9 @@ | |||||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1386,9 +1386,9 @@ | |||||
| 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | 9998 FORMAT(' ******* FATAL ERROR - PARAMETER NUMBER ', I2, ' WAS CH', | ||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT(' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 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 *', | 9994 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -1769,12 +1769,12 @@ | |||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 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 *', | 9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -2222,12 +2222,12 @@ | |||||
| $ 'ANGED INCORRECTLY *******' ) | $ 'ANGED INCORRECTLY *******' ) | ||||
| 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | 9996 FORMAT( ' ******* ', A12,' FAILED ON CALL NUMBER:' ) | ||||
| 9995 FORMAT( ' THESE ARE THE RESULTS FOR COLUMN ', I3 ) | 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 *', | 9992 FORMAT(' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *', | ||||
| $ '******' ) | $ '******' ) | ||||
| * | * | ||||
| @@ -2706,7 +2706,7 @@ | |||||
| 50 CONTINUE | 50 CONTINUE | ||||
| END IF | END IF | ||||
| * | * | ||||
| 60 CONTINUE | |||||
| C 60 CONTINUE | |||||
| LZERES = .TRUE. | LZERES = .TRUE. | ||||
| GO TO 80 | GO TO 80 | ||||
| 70 CONTINUE | 70 CONTINUE | ||||
| @@ -73,7 +73,7 @@ GenerateNamedObjects("zgbmv_k.c" "TRANS;CONJ;XCONJ" "gbmv_d" false "" "" "" 2) | |||||
| # special defines for complex | # special defines for complex | ||||
| foreach (float_type ${FLOAT_TYPES}) | 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" "" "gemv_thread_n" false "" "" false ${float_type}) | ||||
| GenerateNamedObjects("gemv_thread.c" "TRANSA" "gemv_thread_t" 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}) | GenerateNamedObjects("z${ulvm_source}" "LOWER;HEMVREV" "${op_name}_M" false "" "" false ${float_type}) | ||||
| endforeach() | endforeach() | ||||
| if (SMP) | |||||
| if (USE_THREAD) | |||||
| GenerateNamedObjects("gemv_thread.c" "CONJ" "gemv_thread_r" false "" "" false ${float_type}) | 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}) | 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}) | GenerateCombinationObjects("${l_source}" "UNIT" "N" "TRANSA" 0 "${op_name}_TU" false ${float_type}) | ||||
| endforeach () | endforeach () | ||||
| if (SMP) | |||||
| if (USE_THREAD) | |||||
| GenerateNamedObjects("ger_thread.c" "" "" false "" "" false ${float_type}) | GenerateNamedObjects("ger_thread.c" "" "" false "" "" false ${float_type}) | ||||
| foreach(nu_smp_source ${NU_SMP_SOURCES}) | foreach(nu_smp_source ${NU_SMP_SOURCES}) | ||||
| string(REGEX MATCH "[a-z]+_[a-z]+" op_name ${nu_smp_source}) | string(REGEX MATCH "[a-z]+_[a-z]+" op_name ${nu_smp_source}) | ||||
| @@ -197,7 +197,7 @@ foreach (float_type ${FLOAT_TYPES}) | |||||
| endif () | endif () | ||||
| endforeach () | endforeach () | ||||
| if (SMP) | |||||
| if (USE_THREAD) | |||||
| GenerateCombinationObjects("${UL_SMP_SOURCES}" "LOWER" "U" "" 2) | GenerateCombinationObjects("${UL_SMP_SOURCES}" "LOWER" "U" "" 2) | ||||
| endif () | endif () | ||||
| @@ -62,13 +62,13 @@ void CNAME(BLASLONG m, BLASLONG n, BLASLONG ku, BLASLONG kl, FLOAT alpha, | |||||
| if (incy != 1) { | if (incy != 1) { | ||||
| Y = bufferY; | Y = bufferY; | ||||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + M * sizeof(FLOAT) + 4095) & ~4095); | bufferX = (FLOAT *)(((BLASLONG)bufferY + M * sizeof(FLOAT) + 4095) & ~4095); | ||||
| gemvbuffer = bufferX; | |||||
| // gemvbuffer = bufferX; | |||||
| COPY_K(M, y, incy, Y, 1); | COPY_K(M, y, incy, Y, 1); | ||||
| } | } | ||||
| if (incx != 1) { | if (incx != 1) { | ||||
| X = bufferX; | 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); | 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); | COPY_K(args -> m, x, incx, buffer, 1); | ||||
| x = buffer; | x = buffer; | ||||
| buffer += ((COMPSIZE * args -> m + 1023) & ~1023); | |||||
| // buffer += ((COMPSIZE * args -> m + 1023) & ~1023); | |||||
| } | } | ||||
| #endif | #endif | ||||
| @@ -230,10 +230,10 @@ int CNAME(BLASLONG m, BLASLONG n, BLASLONG ku, BLASLONG kl, FLOAT *alpha, FLOAT | |||||
| #ifndef TRANSA | #ifndef TRANSA | ||||
| range_m[num_cpu] = num_cpu * ((m + 15) & ~15); | 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 | #else | ||||
| range_m[num_cpu] = num_cpu * ((n + 15) & ~15); | 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 | #endif | ||||
| queue[num_cpu].mode = mode; | queue[num_cpu].mode = mode; | ||||
| @@ -55,13 +55,13 @@ int CNAME(BLASLONG n, BLASLONG k, FLOAT alpha, | |||||
| if (incy != 1) { | if (incy != 1) { | ||||
| Y = bufferY; | Y = bufferY; | ||||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) + 4095) & ~4095); | bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) + 4095) & ~4095); | ||||
| sbmvbuffer = bufferX; | |||||
| // sbmvbuffer = bufferX; | |||||
| COPY_K(n, y, incy, Y, 1); | COPY_K(n, y, incy, Y, 1); | ||||
| } | } | ||||
| if (incx != 1) { | if (incx != 1) { | ||||
| X = bufferX; | 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); | 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); | COPY_K(n, x, incx, buffer, 1); | ||||
| x = buffer; | x = buffer; | ||||
| buffer += ((COMPSIZE * n + 1023) & ~1023); | |||||
| // buffer += ((COMPSIZE * n + 1023) & ~1023); | |||||
| } | } | ||||
| SCAL_K(n, 0, 0, ZERO, | 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_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); | 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].mode = mode; | ||||
| queue[num_cpu].routine = sbmv_kernel; | 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_m[num_cpu + 1] = range_m[num_cpu] + width; | ||||
| range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16); | 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].mode = mode; | ||||
| queue[num_cpu].routine = sbmv_kernel; | 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_m[num_cpu + 1] = range_m[num_cpu] + width; | ||||
| range_n[num_cpu] = num_cpu * ((n + 15) & ~15); | 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].mode = mode; | ||||
| queue[num_cpu].routine = sbmv_kernel; | queue[num_cpu].routine = sbmv_kernel; | ||||
| @@ -53,13 +53,13 @@ int CNAME(BLASLONG m, FLOAT alpha, FLOAT *a, | |||||
| if (incy != 1) { | if (incy != 1) { | ||||
| Y = bufferY; | Y = bufferY; | ||||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) + 4095) & ~4095); | bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) + 4095) & ~4095); | ||||
| gemvbuffer = bufferX; | |||||
| // gemvbuffer = bufferX; | |||||
| COPY_K(m, y, incy, Y, 1); | COPY_K(m, y, incy, Y, 1); | ||||
| } | } | ||||
| if (incx != 1) { | if (incx != 1) { | ||||
| X = bufferX; | 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); | 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_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); | 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].mode = mode; | ||||
| queue[num_cpu].routine = spmv_kernel; | 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_m[num_cpu + 1] = range_m[num_cpu] + width; | ||||
| range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16); | 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].mode = mode; | ||||
| queue[num_cpu].routine = spmv_kernel; | 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_m[num_cpu + 1] = range_m[num_cpu] + width; | ||||
| range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16); | 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].mode = mode; | ||||
| queue[MAX_CPU_NUMBER - num_cpu - 1].routine = symv_kernel; | 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_m[num_cpu + 1] = range_m[num_cpu] + width; | ||||
| range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16); | 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].mode = mode; | ||||
| queue[num_cpu].routine = symv_kernel; | queue[num_cpu].routine = symv_kernel; | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | 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); | COPY_K(args -> n, x, incx, buffer, 1); | ||||
| x = buffer; | x = buffer; | ||||
| buffer += ((args -> n * COMPSIZE + 1023) & ~1023); | |||||
| // buffer += ((args -> n * COMPSIZE + 1023) & ~1023); | |||||
| } | } | ||||
| if (range_n) y += *range_n * COMPSIZE; | 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_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); | 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].mode = mode; | ||||
| queue[num_cpu].routine = trmv_kernel; | 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_m[num_cpu + 1] = range_m[num_cpu] + width; | ||||
| range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16); | 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].mode = mode; | ||||
| queue[num_cpu].routine = trmv_kernel; | 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_m[num_cpu + 1] = range_m[num_cpu] + width; | ||||
| range_n[num_cpu] = num_cpu * (((n + 15) & ~15) + 16); | 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].mode = mode; | ||||
| queue[num_cpu].routine = trmv_kernel; | queue[num_cpu].routine = trmv_kernel; | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | int CNAME(BLASLONG m, FLOAT *a, FLOAT *b, BLASLONG incb, void *buffer){ | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | 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 | #endif | ||||
| x = buffer; | x = buffer; | ||||
| buffer += ((COMPSIZE * args -> m + 1023) & ~1023); | |||||
| // buffer += ((COMPSIZE * args -> m + 1023) & ~1023); | |||||
| } | } | ||||
| #ifndef TRANS | #ifndef TRANS | ||||
| @@ -234,11 +234,7 @@ static int tpmv_kernel(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, F | |||||
| return 0; | 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){ | int CNAME(BLASLONG m, FLOAT *a, FLOAT *x, BLASLONG incx, FLOAT *buffer, int nthreads){ | ||||
| #endif | |||||
| blas_arg_t args; | blas_arg_t args; | ||||
| blas_queue_t queue[MAX_CPU_NUMBER]; | 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_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); | 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].mode = mode; | ||||
| queue[num_cpu].routine = tpmv_kernel; | 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_m[num_cpu + 1] = range_m[num_cpu] + width; | ||||
| range_n[num_cpu] = num_cpu * (((m + 15) & ~15) + 16); | 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].mode = mode; | ||||
| queue[num_cpu].routine = tpmv_kernel; | 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); | 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 | #ifndef TRANSA | ||||
| if (is > 0){ | if (is > 0){ | ||||
| fprintf(stderr,"WARNING unrolling of the trmv_U loop may give wrong results\n"); | |||||
| GEMV_N(is, min_i, 0, dp1, | GEMV_N(is, min_i, 0, dp1, | ||||
| a + is * lda, lda, | a + is * lda, lda, | ||||
| B + is, 1, | B + is, 1, | ||||
| @@ -83,13 +83,13 @@ void CNAME(BLASLONG m, BLASLONG n, BLASLONG ku, BLASLONG kl, FLOAT alpha_r, FLOA | |||||
| if (incy != 1) { | if (incy != 1) { | ||||
| Y = bufferY; | Y = bufferY; | ||||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + M * sizeof(FLOAT) * 2 + 4095) & ~4095); | bufferX = (FLOAT *)(((BLASLONG)bufferY + M * sizeof(FLOAT) * 2 + 4095) & ~4095); | ||||
| gemvbuffer = bufferX; | |||||
| // gemvbuffer = bufferX; | |||||
| COPY_K(M, y, incy, Y, 1); | COPY_K(M, y, incy, Y, 1); | ||||
| } | } | ||||
| if (incx != 1) { | if (incx != 1) { | ||||
| X = bufferX; | 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); | 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) { | if (incy != 1) { | ||||
| Y = bufferY; | Y = bufferY; | ||||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095); | bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095); | ||||
| sbmvbuffer = bufferX; | |||||
| // sbmvbuffer = bufferX; | |||||
| COPY_K(n, y, incy, Y, 1); | COPY_K(n, y, incy, Y, 1); | ||||
| } | } | ||||
| if (incx != 1) { | if (incx != 1) { | ||||
| X = bufferX; | 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); | COPY_K(n, x, incx, X, 1); | ||||
| } | } | ||||
| @@ -56,13 +56,13 @@ int CNAME(BLASLONG m, FLOAT alpha_r, FLOAT alpha_i, | |||||
| if (incy != 1) { | if (incy != 1) { | ||||
| Y = bufferY; | Y = bufferY; | ||||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) * 2 + 4095) & ~4095); | bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) * 2 + 4095) & ~4095); | ||||
| gemvbuffer = bufferX; | |||||
| // gemvbuffer = bufferX; | |||||
| COPY_K(m, y, incy, Y, 1); | COPY_K(m, y, incy, Y, 1); | ||||
| } | } | ||||
| if (incx != 1) { | if (incx != 1) { | ||||
| X = bufferX; | 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); | 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) { | if (incy != 1) { | ||||
| Y = bufferY; | Y = bufferY; | ||||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095); | bufferX = (FLOAT *)(((BLASLONG)bufferY + n * sizeof(FLOAT) * COMPSIZE + 4095) & ~4095); | ||||
| sbmvbuffer = bufferX; | |||||
| // sbmvbuffer = bufferX; | |||||
| COPY_K(n, y, incy, Y, 1); | COPY_K(n, y, incy, Y, 1); | ||||
| } | } | ||||
| if (incx != 1) { | if (incx != 1) { | ||||
| X = bufferX; | 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); | COPY_K(n, x, incx, X, 1); | ||||
| } | } | ||||
| @@ -55,13 +55,13 @@ int CNAME(BLASLONG m, FLOAT alpha_r, FLOAT alpha_i, | |||||
| if (incy != 1) { | if (incy != 1) { | ||||
| Y = bufferY; | Y = bufferY; | ||||
| bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) * 2 + 4095) & ~4095); | bufferX = (FLOAT *)(((BLASLONG)bufferY + m * sizeof(FLOAT) * 2 + 4095) & ~4095); | ||||
| gemvbuffer = bufferX; | |||||
| // gemvbuffer = bufferX; | |||||
| COPY_K(m, y, incy, Y, 1); | COPY_K(m, y, incy, Y, 1); | ||||
| } | } | ||||
| if (incx != 1) { | if (incx != 1) { | ||||
| X = bufferX; | 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); | COPY_K(m, x, incx, X, 1); | ||||
| } | } | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | int CNAME(BLASLONG n, BLASLONG k, FLOAT *a, BLASLONG lda, FLOAT *b, BLASLONG incb, void *buffer){ | ||||
| @@ -40,7 +40,7 @@ | |||||
| #include <ctype.h> | #include <ctype.h> | ||||
| #include "common.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){ | 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}) | foreach (GEMM_DEFINE ${GEMM_DEFINES}) | ||||
| string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC) | string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC) | ||||
| GenerateNamedObjects("gemm.c" "${GEMM_DEFINE}" "gemm_${GEMM_DEFINE_LC}" 0) | 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) | GenerateNamedObjects("gemm.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm_thread_${GEMM_DEFINE_LC}" 0) | ||||
| endif () | endif () | ||||
| endforeach () | endforeach () | ||||
| @@ -32,7 +32,7 @@ GenerateCombinationObjects("syrk_k.c" "LOWER;TRANS" "U;N" "" 1) | |||||
| GenerateCombinationObjects("syr2k_k.c" "LOWER;TRANS" "U;N" "" 1) | GenerateCombinationObjects("syr2k_k.c" "LOWER;TRANS" "U;N" "" 1) | ||||
| GenerateCombinationObjects("syrk_kernel.c" "LOWER" "U" "" 2) | GenerateCombinationObjects("syrk_kernel.c" "LOWER" "U" "" 2) | ||||
| GenerateCombinationObjects("syr2k_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! | # 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) | 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" "her2k_LN" false "" "" false ${float_type}) | ||||
| GenerateNamedObjects("zher2k_k.c" "HER2K;LOWER;TRANS;CONJ" "her2k_LC" 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 | #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" 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}) | 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) | if(USE_GEMM3M) | ||||
| GenerateNamedObjects("gemm3m.c" "${gemm_define}" "gemm3m_${gemm_define_LC}" false "" "" false ${float_type}) | GenerateNamedObjects("gemm3m.c" "${gemm_define}" "gemm3m_${gemm_define_LC}" false "" "" false ${float_type}) | ||||
| endif() | 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}) | GenerateNamedObjects("gemm.c" "${gemm_define};THREADED_LEVEL3" "gemm_thread_${gemm_define_LC}" false "" "" false ${float_type}) | ||||
| if(USE_GEMM3M) | if(USE_GEMM3M) | ||||
| GenerateNamedObjects("gemm3m.c" "${gemm_define};THREADED_LEVEL3" "gemm3m_thread_${gemm_define_LC}" false "" "" false ${float_type}) | 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}) | foreach (GEMM_DEFINE ${GEMM_DEFINES}) | ||||
| string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC) | string(TOLOWER ${GEMM_DEFINE} GEMM_DEFINE_LC) | ||||
| GenerateNamedObjects("gemm3m.c" "${GEMM_DEFINE}" "gemm3m_${GEMM_DEFINE_LC}" false "" "" false ${float_type}) | 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}) | GenerateNamedObjects("gemm3m.c" "${GEMM_DEFINE};THREADED_LEVEL3" "gemm3m_thread_${GEMM_DEFINE_LC}" false "" "" false ${float_type}) | ||||
| endif () | endif () | ||||
| endforeach () | 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 ((k == 0) || (alpha == NULL)) return 0; | ||||
| #if !defined(XDOUBLE) || !defined(QUAD_PRECISION) | #if !defined(XDOUBLE) || !defined(QUAD_PRECISION) | ||||
| if ((alpha[0] == ZERO) | |||||
| if ( alpha[0] == ZERO | |||||
| #ifdef COMPLEX | #ifdef COMPLEX | ||||
| && (alpha[1] == ZERO) | |||||
| && alpha[1] == ZERO | |||||
| #endif | #endif | ||||
| ) return 0; | |||||
| ) return 0; | |||||
| #else | #else | ||||
| if (((alpha[0].x[0] | alpha[0].x[1] | if (((alpha[0].x[0] | alpha[0].x[1] | ||||
| #ifdef COMPLEX | #ifdef COMPLEX | ||||
| @@ -293,7 +293,7 @@ int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||||
| min_l = k - ls; | min_l = k - ls; | ||||
| if (min_l >= GEMM_Q * 2) { | if (min_l >= GEMM_Q * 2) { | ||||
| gemm_p = GEMM_P; | |||||
| // gemm_p = GEMM_P; | |||||
| min_l = GEMM_Q; | min_l = GEMM_Q; | ||||
| } else { | } else { | ||||
| if (min_l > GEMM_Q) { | 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){ | int CNAME(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, FLOAT *sa, FLOAT *sb, BLASLONG mypos){ | ||||
| BLASLONG m = args -> m; | BLASLONG m = args -> m; | ||||
| BLASLONG n = args -> n; | |||||
| // BLASLONG n = args -> n; | |||||
| BLASLONG nthreads = args -> nthreads; | BLASLONG nthreads = args -> nthreads; | ||||
| BLASLONG divN, divT; | BLASLONG divN, divT; | ||||
| int mode; | 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; | m = m_to - m_from; | ||||
| } | } | ||||
| /* | |||||
| if (range_n) { | if (range_n) { | ||||
| BLASLONG n_from = *(((BLASLONG *)range_n) + 0); | BLASLONG n_from = *(((BLASLONG *)range_n) + 0); | ||||
| BLASLONG n_to = *(((BLASLONG *)range_n) + 1); | BLASLONG n_to = *(((BLASLONG *)range_n) + 1); | ||||
| n = n_to - n_from; | n = n_to - n_from; | ||||
| } | } | ||||
| */ | |||||
| if ((args -> m < nthreads * SWITCH_RATIO) || (args -> n < nthreads * SWITCH_RATIO)) { | if ((args -> m < nthreads * SWITCH_RATIO) || (args -> n < nthreads * SWITCH_RATIO)) { | ||||
| GEMM3M_LOCAL(args, range_m, range_n, sa, sb, 0); | 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 ((k == 0) || (alpha == NULL)) return 0; | ||||
| if ((alpha[0] == ZERO) | |||||
| if (alpha[0] == ZERO | |||||
| #ifdef COMPLEX | #ifdef COMPLEX | ||||
| && (alpha[1] == ZERO) | |||||
| && alpha[1] == ZERO | |||||
| #endif | #endif | ||||
| ) return 0; | ) 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 ((k == 0) || (alpha == NULL)) return 0; | ||||
| if ((alpha[0] == ZERO) | |||||
| if (alpha[0] == ZERO | |||||
| #if defined(COMPLEX) && !defined(HERK) | #if defined(COMPLEX) && !defined(HERK) | ||||
| && (alpha[1] == ZERO) | |||||
| && alpha[1] == ZERO | |||||
| #endif | #endif | ||||
| ) return 0; | ) 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 ((k == 0) || (alpha == NULL)) return 0; | ||||
| if ((alpha[0] == ZERO) | |||||
| if (alpha[0] == ZERO | |||||
| #if defined(COMPLEX) && !defined(HERK) | #if defined(COMPLEX) && !defined(HERK) | ||||
| && (alpha[1] == ZERO) | |||||
| && alpha[1] == ZERO | |||||
| #endif | #endif | ||||
| ) return 0; | ) return 0; | ||||
| @@ -97,21 +97,21 @@ typedef struct { | |||||
| #ifndef BETA_OPERATION | #ifndef BETA_OPERATION | ||||
| #ifndef COMPLEX | #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 | #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 | ||||
| #endif | #endif | ||||
| #ifndef ICOPY_OPERATION | #ifndef ICOPY_OPERATION | ||||
| #if defined(NN) || defined(NT) || defined(NC) || defined(NR) || \ | #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); | #define ICOPY_OPERATION(M, N, A, LDA, X, Y, BUFFER) GEMM_ITCOPY(M, N, (FLOAT *)(A) + ((Y) + (X) * (LDA)) * COMPSIZE, LDA, BUFFER); | ||||
| #else | #else | ||||
| #define ICOPY_OPERATION(M, N, A, LDA, X, Y, BUFFER) GEMM_INCOPY(M, N, (FLOAT *)(A) + ((X) + (Y) * (LDA)) * COMPSIZE, LDA, BUFFER); | #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 | #ifndef OCOPY_OPERATION | ||||
| #if defined(NN) || defined(TN) || defined(CN) || defined(RN) || \ | #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); | #define OCOPY_OPERATION(M, N, A, LDA, X, Y, BUFFER) GEMM_ONCOPY(M, N, (FLOAT *)(A) + ((X) + (Y) * (LDA)) * COMPSIZE, LDA, BUFFER); | ||||
| #else | #else | ||||
| #define OCOPY_OPERATION(M, N, A, LDA, X, Y, BUFFER) GEMM_OTCOPY(M, N, (FLOAT *)(A) + ((Y) + (X) * (LDA)) * COMPSIZE, LDA, BUFFER); | #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 KERNEL_OPERATION | ||||
| #ifndef COMPLEX | #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 | #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 | ||||
| #endif | #endif | ||||
| #ifndef FUSED_KERNEL_OPERATION | #ifndef FUSED_KERNEL_OPERATION | ||||
| #if defined(NN) || defined(TN) || defined(CN) || defined(RN) || \ | #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 | #ifndef COMPLEX | ||||
| #define FUSED_KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, B, LDB, C, LDC, I, J, L) \ | #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 | #else | ||||
| #define FUSED_KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, B, LDB, C, LDC, I, J, L) \ | #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 | #endif | ||||
| #else | #else | ||||
| #ifndef COMPLEX | #ifndef COMPLEX | ||||
| #define FUSED_KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, B, LDB, C, LDC, I, J, L) \ | #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 | #else | ||||
| #define FUSED_KERNEL_OPERATION(M, N, K, ALPHA, SA, SB, B, LDB, C, LDC, I, J, L) \ | #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 | #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]; | FLOAT *buffer[DIVIDE_RATE]; | ||||
| BLASLONG k, lda, ldb, ldc; | 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 *alpha, *beta; | ||||
| FLOAT *a, *b, *c; | FLOAT *a, *b, *c; | ||||
| job_t *job = (job_t *)args -> common; | 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 i, current; | ||||
| BLASLONG l1stride; | BLASLONG l1stride; | ||||
| @@ -259,74 +261,69 @@ static int inner_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG *range_n, | |||||
| alpha = (FLOAT *)args -> alpha; | alpha = (FLOAT *)args -> alpha; | ||||
| beta = (FLOAT *)args -> beta; | 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_from = 0; | ||||
| m_to = M; | m_to = M; | ||||
| if (range_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_from = 0; | ||||
| n_to = N; | n_to = N; | ||||
| N_from = 0; | |||||
| N_to = N; | |||||
| if (range_n) { | if (range_n) { | ||||
| n_from = range_n[mypos + 0]; | n_from = range_n[mypos + 0]; | ||||
| n_to = range_n[mypos + 1]; | 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) { | if (beta) { | ||||
| #ifndef COMPLEX | #ifndef COMPLEX | ||||
| if (beta[0] != ONE) | if (beta[0] != ONE) | ||||
| #else | #else | ||||
| if ((beta[0] != ONE) || (beta[1] != ZERO)) | if ((beta[0] != ONE) || (beta[1] != ZERO)) | ||||
| #endif | #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 ((k == 0) || (alpha == NULL)) return 0; | ||||
| if ((alpha[0] == ZERO) | |||||
| if (alpha[0] == ZERO | |||||
| #ifdef COMPLEX | #ifdef COMPLEX | ||||
| && (alpha[1] == ZERO) | |||||
| && alpha[1] == ZERO | |||||
| #endif | #endif | ||||
| ) return 0; | ) 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; | div_n = (n_to - n_from + DIVIDE_RATE - 1) / DIVIDE_RATE; | ||||
| buffer[0] = sb; | buffer[0] = sb; | ||||
| for (i = 1; i < DIVIDE_RATE; i++) { | 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; | 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){ | for(ls = 0; ls < k; ls += min_l){ | ||||
| /* Determine step size in k */ | |||||
| min_l = k - ls; | min_l = k - ls; | ||||
| if (min_l >= GEMM_Q * 2) { | if (min_l >= GEMM_Q * 2) { | ||||
| min_l = GEMM_Q; | min_l = GEMM_Q; | ||||
| } else { | } else { | ||||
| if (min_l > GEMM_Q) min_l = (min_l + 1) / 2; | 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; | l1stride = 1; | ||||
| min_i = m_to - m_from; | min_i = m_to - m_from; | ||||
| if (min_i >= GEMM_P * 2) { | if (min_i >= GEMM_P * 2) { | ||||
| min_i = GEMM_P; | min_i = GEMM_P; | ||||
| } else { | } 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(); | START_RPCC(); | ||||
| ICOPY_OPERATION(min_l, min_i, a, lda, ls, m_from, sa); | ICOPY_OPERATION(min_l, min_i, a, lda, ls, m_from, sa); | ||||
| STOP_RPCC(copy_A); | 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; | 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(); | START_RPCC(); | ||||
| /* Make sure if no one is using buffer */ | |||||
| for (i = 0; i < args -> nthreads; i++) | for (i = 0; i < args -> nthreads; i++) | ||||
| while (job[mypos].working[i][CACHE_LINE_SIZE * bufferside]) {YIELDING;}; | while (job[mypos].working[i][CACHE_LINE_SIZE * bufferside]) {YIELDING;}; | ||||
| STOP_RPCC(waiting1); | STOP_RPCC(waiting1); | ||||
| #if defined(FUSED_GEMM) && !defined(TIMING) | #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 | #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; | if (min_jj >= 3*GEMM_UNROLL_N) min_jj = 3*GEMM_UNROLL_N; | ||||
| else | 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(); | START_RPCC(); | ||||
| OCOPY_OPERATION(min_l, min_jj, b, ldb, ls, jjs, | 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); | STOP_RPCC(copy_B); | ||||
| /* Apply kernel with local region of A and part of local region of B */ | |||||
| START_RPCC(); | START_RPCC(); | ||||
| KERNEL_OPERATION(min_i, min_jj, min_l, alpha, | 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); | c, ldc, m_from, jjs); | ||||
| STOP_RPCC(kernel); | STOP_RPCC(kernel); | ||||
| #ifdef TIMING | #ifdef TIMING | ||||
| ops += 2 * min_i * min_jj * min_l; | |||||
| ops += 2 * min_i * min_jj * min_l; | |||||
| #endif | #endif | ||||
| } | } | ||||
| #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; | WMB; | ||||
| } | } | ||||
| /* Get regions of B from other threads and apply kernel */ | |||||
| current = mypos; | current = mypos; | ||||
| do { | do { | ||||
| /* This thread accesses regions of B from threads in the range | |||||
| * [ mypos_n * nthreads_m, (mypos_n+1) * nthreads_m ) */ | |||||
| current ++; | 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; | 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(); | START_RPCC(); | ||||
| /* thread has to wait */ | |||||
| while(job[current].working[mypos][CACHE_LINE_SIZE * bufferside] == 0) {YIELDING;}; | while(job[current].working[mypos][CACHE_LINE_SIZE * bufferside] == 0) {YIELDING;}; | ||||
| STOP_RPCC(waiting2); | STOP_RPCC(waiting2); | ||||
| /* Apply kernel with local region of A and part of other region of B */ | |||||
| START_RPCC(); | 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], | 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 | #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 | #endif | ||||
| } | } | ||||
| /* Clear synchronization flag if this thread is done with other region of B */ | |||||
| if (m_to - m_from == min_i) { | if (m_to - m_from == min_i) { | ||||
| job[current].working[mypos][CACHE_LINE_SIZE * bufferside] &= 0; | job[current].working[mypos][CACHE_LINE_SIZE * bufferside] &= 0; | ||||
| } | } | ||||
| } | } | ||||
| } while (current != mypos); | } 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){ | for(is = m_from + min_i; is < m_to; is += min_i){ | ||||
| min_i = m_to - is; | min_i = m_to - is; | ||||
| if (min_i >= GEMM_P * 2) { | if (min_i >= GEMM_P * 2) { | ||||
| min_i = GEMM_P; | min_i = GEMM_P; | ||||
| } else | } 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; | 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(); | START_RPCC(); | ||||
| ICOPY_OPERATION(min_l, min_i, a, lda, ls, is, sa); | ICOPY_OPERATION(min_l, min_i, a, lda, ls, is, sa); | ||||
| STOP_RPCC(copy_A); | STOP_RPCC(copy_A); | ||||
| /* Get regions of B and apply kernel */ | |||||
| current = mypos; | current = mypos; | ||||
| do { | do { | ||||
| /* Split region of B into parts and apply kernel */ | |||||
| div_n = (range_n[current + 1] - range_n[current] + DIVIDE_RATE - 1) / DIVIDE_RATE; | 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(); | 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], | 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 | #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 ++; | current ++; | ||||
| if (current >= args -> nthreads) current = 0; | |||||
| if (current >= (mypos_n + 1) * nthreads_m) current = mypos_n * nthreads_m; | |||||
| } while (current != mypos); | } 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(); | START_RPCC(); | ||||
| for (i = 0; i < args -> nthreads; i++) { | 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); | STOP_RPCC(waiting3); | ||||
| #ifdef TIMING | #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)waiting2 /(double)total * 100., | ||||
| (double)waiting3 /(double)total * 100., | (double)waiting3 /(double)total * 100., | ||||
| (double)ops/(double)kernel / 4. * 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"); | fprintf(stderr, "\n"); | ||||
| #endif | #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 | 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; | 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]; | 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 nthreads = args -> nthreads; | ||||
| BLASLONG width, i, j, k, js; | BLASLONG width, i, j, k, js; | ||||
| BLASLONG m, n, n_from, n_to; | BLASLONG m, n, n_from, n_to; | ||||
| int mode; | |||||
| int mode; | |||||
| /* Get execution mode */ | |||||
| #ifndef COMPLEX | #ifndef COMPLEX | ||||
| #ifdef XDOUBLE | #ifdef XDOUBLE | ||||
| mode = BLAS_XDOUBLE | BLAS_REAL | BLAS_NODE; | 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 | ||||
| #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.m = args -> m; | ||||
| newarg.n = args -> n; | newarg.n = args -> n; | ||||
| newarg.k = args -> k; | 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.alpha = args -> alpha; | ||||
| newarg.beta = args -> beta; | newarg.beta = args -> beta; | ||||
| newarg.nthreads = args -> nthreads; | 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; | newarg.common = (void *)job; | ||||
| #ifdef PARAMTEST | #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 | #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) { | if (!range_m) { | ||||
| range_M[0] = 0; | range_M[0] = 0; | ||||
| m = args -> m; | 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]; | m = range_m[1] - range_m[0]; | ||||
| } | } | ||||
| num_cpu_m = 0; | |||||
| /* Partition m into nthreads_m regions */ | |||||
| num_parts = 0; | |||||
| while (m > 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; | m -= width; | ||||
| if (m < 0) width = width + m; | 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].mode = mode; | ||||
| queue[i].routine = inner_thread; | queue[i].routine = inner_thread; | ||||
| queue[i].args = &newarg; | 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].sa = NULL; | ||||
| queue[i].sb = NULL; | queue[i].sb = NULL; | ||||
| queue[i].next = &queue[i + 1]; | queue[i].next = &queue[i + 1]; | ||||
| } | } | ||||
| queue[0].sa = sa; | queue[0].sa = sa; | ||||
| queue[0].sb = sb; | queue[0].sb = sb; | ||||
| queue[nthreads - 1].next = NULL; | |||||
| /* Iterate through steps of n */ | |||||
| if (!range_n) { | if (!range_n) { | ||||
| n_from = 0; | n_from = 0; | ||||
| n_to = args -> n; | 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_from = range_n[0]; | ||||
| n_to = range_n[1]; | n_to = range_n[1]; | ||||
| } | } | ||||
| for(js = n_from; js < n_to; js += GEMM_R * nthreads){ | for(js = n_from; js < n_to; js += GEMM_R * nthreads){ | ||||
| n = n_to - js; | n = n_to - js; | ||||
| if (n > GEMM_R * nthreads) n = GEMM_R * nthreads; | if (n > GEMM_R * nthreads) n = GEMM_R * nthreads; | ||||
| /* Partition (a step of) n into nthreads regions */ | |||||
| range_N[0] = js; | range_N[0] = js; | ||||
| num_cpu_n = 0; | |||||
| num_parts = 0; | |||||
| while (n > 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; | n -= width; | ||||
| if (n < 0) width = width + n; | 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++) { | 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 | #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 m = args -> m; | ||||
| BLASLONG n = args -> n; | 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) { | 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) { | 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 { | } 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; | return 0; | ||||
| @@ -7,7 +7,7 @@ else () | |||||
| set(MEMORY memory.c) | set(MEMORY memory.c) | ||||
| endif () | endif () | ||||
| if (SMP) | |||||
| if (USE_THREAD) | |||||
| if (USE_OPENMP) | if (USE_OPENMP) | ||||
| set(BLAS_SERVER blas_server_omp.c) | 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 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||
| SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | 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. | 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/sysinfo.h> | ||||
| #include <sys/syscall.h> | #include <sys/syscall.h> | ||||
| #include <sys/types.h> | |||||
| #include <errno.h> | |||||
| #include <sys/shm.h> | #include <sys/shm.h> | ||||
| #include <fcntl.h> | #include <fcntl.h> | ||||
| #include <sched.h> | #include <sched.h> | ||||
| @@ -88,9 +90,11 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| #if defined(BIGNUMA) | #if defined(BIGNUMA) | ||||
| // max number of nodes as defined in numa.h | // 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_NODES 128 | ||||
| #define MAX_CPUS CPU_SETSIZE | |||||
| #define MAX_CPUS 1024 | |||||
| #else | #else | ||||
| #define MAX_NODES 16 | #define MAX_NODES 16 | ||||
| #define MAX_CPUS 256 | #define MAX_CPUS 256 | ||||
| @@ -233,7 +237,7 @@ static inline void get_cpumap(int node, unsigned long * node_info) { | |||||
| if(k!=0){ | if(k!=0){ | ||||
| name[k]='\0'; | name[k]='\0'; | ||||
| affinity[count++] = strtoul(name, &dummy, 16); | affinity[count++] = strtoul(name, &dummy, 16); | ||||
| k=0; | |||||
| // k=0; | |||||
| } | } | ||||
| // 0-63bit -> node_info[0], 64-128bit -> node_info[1] .... | // 0-63bit -> node_info[0], 64-128bit -> node_info[1] .... | ||||
| // revert the sequence | // revert the sequence | ||||
| @@ -289,7 +293,7 @@ static inline void get_share(int cpu, int level, unsigned long * share) { | |||||
| if(k!=0){ | if(k!=0){ | ||||
| name[k]='\0'; | name[k]='\0'; | ||||
| affinity[count++] = strtoul(name, &dummy, 16); | affinity[count++] = strtoul(name, &dummy, 16); | ||||
| k=0; | |||||
| // k=0; | |||||
| } | } | ||||
| // 0-63bit -> node_info[0], 64-128bit -> node_info[1] .... | // 0-63bit -> node_info[0], 64-128bit -> node_info[1] .... | ||||
| // revert the sequence | // revert the sequence | ||||
| @@ -629,10 +633,12 @@ static inline int is_dead(int id) { | |||||
| return shmctl(id, IPC_STAT, &ds); | return shmctl(id, IPC_STAT, &ds); | ||||
| } | } | ||||
| static void open_shmem(void) { | |||||
| static int open_shmem(void) { | |||||
| int try = 0; | int try = 0; | ||||
| int err = 0; | |||||
| do { | do { | ||||
| #if defined(BIGNUMA) | #if defined(BIGNUMA) | ||||
| @@ -650,34 +656,53 @@ static void open_shmem(void) { | |||||
| #endif | #endif | ||||
| } | } | ||||
| if (shmid == -1) err = errno; | |||||
| try ++; | try ++; | ||||
| } while ((try < 10) && (shmid == -1)); | } while ((try < 10) && (shmid == -1)); | ||||
| if (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 | #ifdef DEBUG | ||||
| fprintf(stderr, "Shared Memory id = %x Address = %p\n", shmid, common); | fprintf(stderr, "Shared Memory id = %x Address = %p\n", shmid, common); | ||||
| #endif | #endif | ||||
| return (0); | |||||
| } | } | ||||
| static void create_pshmem(void) { | |||||
| static int create_pshmem(void) { | |||||
| pshmid = shmget(IPC_PRIVATE, 4096, IPC_CREAT | 0666); | 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 | #ifdef DEBUG | ||||
| fprintf(stderr, "Private Shared Memory id = %x Address = %p\n", pshmid, paddr); | fprintf(stderr, "Private Shared Memory id = %x Address = %p\n", pshmid, paddr); | ||||
| #endif | #endif | ||||
| return(0); | |||||
| } | } | ||||
| static void local_cpu_map(void) { | static void local_cpu_map(void) { | ||||
| @@ -805,17 +830,23 @@ void gotoblas_affinity_init(void) { | |||||
| return; | 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)) { | while ((common -> lock) && (common -> magic != SH_MAGIC)) { | ||||
| if (is_dead(common -> shmid)) { | if (is_dead(common -> shmid)) { | ||||
| common -> lock = 0; | common -> lock = 0; | ||||
| common -> shmid = 0; | common -> shmid = 0; | ||||
| common -> magic = 0; | common -> magic = 0; | ||||
| } else { | } else { | ||||
| sched_yield(); | |||||
| YIELDING; | |||||
| } | } | ||||
| } | } | ||||
| @@ -872,6 +903,7 @@ void gotoblas_affinity_init(void) { | |||||
| } | } | ||||
| #else | #else | ||||
| common->num_procs = CPU_COUNT(sizeof(cpu_set_t),cpusetp); | common->num_procs = CPU_COUNT(sizeof(cpu_set_t),cpusetp); | ||||
| } | |||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| @@ -177,7 +177,7 @@ int get_num_procs(void) { | |||||
| cpu_set_t *cpusetp; | cpu_set_t *cpusetp; | ||||
| size_t size; | size_t size; | ||||
| int ret; | int ret; | ||||
| int i,n; | |||||
| // int i,n; | |||||
| if (!nums) nums = sysconf(_SC_NPROCESSORS_CONF); | if (!nums) nums = sysconf(_SC_NPROCESSORS_CONF); | ||||
| #if !defined(OS_LINUX) | #if !defined(OS_LINUX) | ||||
| @@ -348,7 +348,7 @@ int blas_get_cpu_number(void){ | |||||
| max_num = get_num_procs(); | max_num = get_num_procs(); | ||||
| #endif | #endif | ||||
| blas_goto_num = 0; | |||||
| // blas_goto_num = 0; | |||||
| #ifndef USE_OPENMP | #ifndef USE_OPENMP | ||||
| blas_goto_num=openblas_num_threads_env(); | blas_goto_num=openblas_num_threads_env(); | ||||
| if (blas_goto_num < 0) blas_goto_num = 0; | if (blas_goto_num < 0) blas_goto_num = 0; | ||||
| @@ -360,7 +360,7 @@ int blas_get_cpu_number(void){ | |||||
| #endif | #endif | ||||
| blas_omp_num = 0; | |||||
| // blas_omp_num = 0; | |||||
| blas_omp_num=openblas_omp_num_threads_env(); | blas_omp_num=openblas_omp_num_threads_env(); | ||||
| if (blas_omp_num < 0) blas_omp_num = 0; | if (blas_omp_num < 0) blas_omp_num = 0; | ||||
| @@ -51,7 +51,7 @@ endif | |||||
| endif | endif | ||||
| endif | endif | ||||
| ifeq ($(NOFORTRAN), $(filter $(NOFORTRAN),1 2)) | |||||
| ifneq (,$(filter 1 2,$(NOFORTRAN))) | |||||
| FEXTRALIB = | FEXTRALIB = | ||||
| endif | endif | ||||
| @@ -112,7 +112,7 @@ else | |||||
| $(OBJCONV) @objconv.def ../$(LIBNAME) ../$(LIBNAME).osx.renamed | $(OBJCONV) @objconv.def ../$(LIBNAME) ../$(LIBNAME).osx.renamed | ||||
| $(LIBDYNNAME) : ../$(LIBNAME).osx.renamed osx.def | $(LIBDYNNAME) : ../$(LIBNAME).osx.renamed osx.def | ||||
| endif | endif | ||||
| ifeq ($(NOFORTRAN), $(filter $(NOFORTRAN),1 2)) | |||||
| ifneq (,$(filter 1 2,$(NOFORTRAN))) | |||||
| #only build without Fortran | #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) | $(CC) $(CFLAGS) -all_load -headerpad_max_install_names -install_name "$(CURDIR)/../$(LIBDYNNAME)" -dynamiclib -o ../$(LIBDYNNAME) $< -Wl,-exported_symbols_list,osx.def $(FEXTRALIB) | ||||
| else | else | ||||
| @@ -159,7 +159,7 @@ | |||||
| ilaenv, ieeeck, lsamen, iparmq, | ilaenv, ieeeck, lsamen, iparmq, | ||||
| ilaprec, ilatrans, ilauplo, iladiag, | ilaprec, ilatrans, ilauplo, iladiag, | ||||
| ilaver, slamch, slamc3, | ilaver, slamch, slamc3, | ||||
| # SCLAUX -- Auxiliary routines called from both REAL and COMPLEX. | # SCLAUX -- Auxiliary routines called from both REAL and COMPLEX. | ||||
| # excluded: second_$(TIMER) | # excluded: second_$(TIMER) | ||||
| sbdsdc, | sbdsdc, | ||||
| @@ -815,6 +815,28 @@ | |||||
| sladiv1, | sladiv1, | ||||
| dladiv1, | dladiv1, | ||||
| iparam2stage, | 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 = ( | @lapack_extendedprecision_objs = ( | ||||
| @@ -3211,9 +3233,14 @@ | |||||
| LAPACKE_zuncsd2by1_work, | LAPACKE_zuncsd2by1_work, | ||||
| ## new function from lapack-3.7.0 | ## new function from lapack-3.7.0 | ||||
| LAPACKE_cgelq, | |||||
| LAPACKE_cgelq_work, | |||||
| LAPACKE_cgemlq, | |||||
| LAPACKE_cgemlq_work, | |||||
| LAPACKE_cgemqr, | LAPACKE_cgemqr, | ||||
| LAPACKE_cgemqr_work, | LAPACKE_cgemqr_work, | ||||
| LAPACKE_cgeqr, | |||||
| LAPACKE_cgeqr_work, | |||||
| LAPACKE_cgetsls, | LAPACKE_cgetsls, | ||||
| LAPACKE_cgetsls_work, | LAPACKE_cgetsls_work, | ||||
| LAPACKE_chbev_2stage, | LAPACKE_chbev_2stage, | ||||
| @@ -3264,8 +3291,14 @@ | |||||
| LAPACKE_csytrs_aa_work, | LAPACKE_csytrs_aa_work, | ||||
| LAPACKE_csytrs_3, | LAPACKE_csytrs_3, | ||||
| LAPACKE_csytrs_3_work, | LAPACKE_csytrs_3_work, | ||||
| LAPACKE_dgelq, | |||||
| LAPACKE_dgelq_work, | |||||
| LAPACKE_dgemlq, | |||||
| LAPACKE_dgemlq_work, | |||||
| LAPACKE_dgemqr, | LAPACKE_dgemqr, | ||||
| LAPACKE_dgemqr_work, | LAPACKE_dgemqr_work, | ||||
| LAPACKE_dgeqr, | |||||
| LAPACKE_dgeqr_work, | |||||
| LAPACKE_dgetsls, | LAPACKE_dgetsls, | ||||
| LAPACKE_dgetsls_work, | LAPACKE_dgetsls_work, | ||||
| LAPACKE_dsbev_2stage, | LAPACKE_dsbev_2stage, | ||||
| @@ -3300,8 +3333,14 @@ | |||||
| LAPACKE_dsytrs_aa_work, | LAPACKE_dsytrs_aa_work, | ||||
| LAPACKE_dsytrs_3, | LAPACKE_dsytrs_3, | ||||
| LAPACKE_dsytrs_3_work, | LAPACKE_dsytrs_3_work, | ||||
| LAPACKE_sgelq, | |||||
| LAPACKE_sgelq_work, | |||||
| LAPACKE_sgemlq, | |||||
| LAPACKE_sgemlq_work, | |||||
| LAPACKE_sgemqr, | LAPACKE_sgemqr, | ||||
| LAPACKE_sgemqr_work, | LAPACKE_sgemqr_work, | ||||
| LAPACKE_sgeqr, | |||||
| LAPACKE_sgeqr_work, | |||||
| LAPACKE_sgetsls, | LAPACKE_sgetsls, | ||||
| LAPACKE_sgetsls_work, | LAPACKE_sgetsls_work, | ||||
| LAPACKE_ssbev_2stage, | LAPACKE_ssbev_2stage, | ||||
| @@ -3336,8 +3375,14 @@ | |||||
| LAPACKE_ssytrs_aa_work, | LAPACKE_ssytrs_aa_work, | ||||
| LAPACKE_ssytrs_3, | LAPACKE_ssytrs_3, | ||||
| LAPACKE_ssytrs_3_work, | LAPACKE_ssytrs_3_work, | ||||
| LAPACKE_zgelq, | |||||
| LAPACKE_zgelq_work, | |||||
| LAPACKE_zgemlq, | |||||
| LAPACKE_zgemlq_work, | |||||
| LAPACKE_zgemqr, | LAPACKE_zgemqr, | ||||
| LAPACKE_zgemqr_work, | LAPACKE_zgemqr_work, | ||||
| LAPACKE_zgeqr, | |||||
| LAPACKE_zgeqr_work, | |||||
| LAPACKE_zgetsls, | LAPACKE_zgetsls, | ||||
| LAPACKE_zgetsls_work, | LAPACKE_zgetsls_work, | ||||
| LAPACKE_zhbev_2stage, | LAPACKE_zhbev_2stage, | ||||
| @@ -3388,6 +3433,62 @@ | |||||
| LAPACKE_zsytrs_aa_work, | LAPACKE_zsytrs_aa_work, | ||||
| LAPACKE_zsytrs_3, | LAPACKE_zsytrs_3, | ||||
| LAPACKE_zsytrs_3_work, | 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. | #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) { | if ($ARGV[8] == 1) { | ||||
| #ONLY_CBLAS=1 | #ONLY_CBLAS=1 | ||||
| @underscore_objs = (@misc_underscore_objs); | @underscore_objs = (@misc_underscore_objs); | ||||
| } elsif ($ARGV[5] == 1) { | } elsif ($ARGV[5] == 1) { | ||||
| #NO_LAPACK=1 | #NO_LAPACK=1 | ||||
| @underscore_objs = (@blasobjs, @misc_underscore_objs); | @underscore_objs = (@blasobjs, @misc_underscore_objs); | ||||
| } elsif (-d "../lapack-netlib") { | |||||
| } elsif (-d $dirname) { | |||||
| if ($ARGV[7] == 0) { | if ($ARGV[7] == 0) { | ||||
| # NEED2UNDERSCORES=0 | # NEED2UNDERSCORES=0 | ||||
| # Don't need 2 underscores | # 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_I6400 */ | ||||
| /* #define FORCE_P6600 */ | /* #define FORCE_P6600 */ | ||||
| /* #define FORCE_P5600 */ | /* #define FORCE_P5600 */ | ||||
| /* #define FORCE_I6500 */ | |||||
| /* #define FORCE_ITANIUM2 */ | /* #define FORCE_ITANIUM2 */ | ||||
| /* #define FORCE_SPARC */ | /* #define FORCE_SPARC */ | ||||
| /* #define FORCE_SPARCV7 */ | /* #define FORCE_SPARCV7 */ | ||||
| @@ -765,6 +766,20 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |||||
| #else | #else | ||||
| #endif | #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 | #ifdef FORCE_ITANIUM2 | ||||
| #define FORCE | #define FORCE | ||||
| #define ARCHITECTURE "IA64" | #define ARCHITECTURE "IA64" | ||||
| @@ -68,8 +68,12 @@ FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){ | |||||
| } | } | ||||
| #else | #else | ||||
| #ifdef COMPLEX | |||||
| FLOAT CNAME(blasint n, void *vx, blasint incx){ | |||||
| FLOAT *x = (FLOAT*) vx; | |||||
| #else | |||||
| FLOAT CNAME(blasint n, FLOAT *x, blasint incx){ | FLOAT CNAME(blasint n, FLOAT *x, blasint incx){ | ||||
| #endif | |||||
| FLOAT ret; | FLOAT ret; | ||||
| @@ -54,7 +54,13 @@ void NAME(blasint *N, FLOAT *x, blasint *INCX, FLOAT *y, blasint *INCY){ | |||||
| #else | #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){ | void CNAME(blasint n, FLOAT *x, blasint incx, FLOAT *y, blasint incy){ | ||||
| #endif | |||||
| PRINT_DEBUG_CNAME; | 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, | blasint m, blasint n, blasint k, | ||||
| #ifndef COMPLEX | #ifndef COMPLEX | ||||
| FLOAT alpha, | FLOAT alpha, | ||||
| #else | |||||
| FLOAT *alpha, | |||||
| #endif | |||||
| FLOAT *a, blasint lda, | FLOAT *a, blasint lda, | ||||
| FLOAT *b, blasint ldb, | FLOAT *b, blasint ldb, | ||||
| #ifndef COMPLEX | |||||
| FLOAT beta, | FLOAT beta, | ||||
| FLOAT *c, blasint ldc) { | |||||
| #else | #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 | #endif | ||||
| FLOAT *c, blasint ldc) { | |||||
| blas_arg_t args; | blas_arg_t args; | ||||
| int transa, transb; | int transa, transb; | ||||
| @@ -146,8 +146,12 @@ blasint NAME(blasint *N, FLOAT *x, blasint *INCX){ | |||||
| } | } | ||||
| #else | #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){ | CBLAS_INDEX CNAME(blasint n, FLOAT *x, blasint incx){ | ||||
| #endif | |||||
| CBLAS_INDEX ret; | CBLAS_INDEX ret; | ||||
| @@ -69,7 +69,12 @@ FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){ | |||||
| #else | #else | ||||
| #ifdef COMPLEX | |||||
| FLOAT CNAME(blasint n, void *vx, blasint incx){ | |||||
| FLOAT *x = (FLOAT*) vx; | |||||
| #else | |||||
| FLOAT CNAME(blasint n, FLOAT *x, blasint incx){ | FLOAT CNAME(blasint n, FLOAT *x, blasint incx){ | ||||
| #endif | |||||
| FLOAT ret; | FLOAT ret; | ||||
| @@ -228,17 +228,22 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_SIDE Side, enum CBLAS_UPLO Uplo, | |||||
| blasint m, blasint n, | blasint m, blasint n, | ||||
| #ifndef COMPLEX | #ifndef COMPLEX | ||||
| FLOAT alpha, | FLOAT alpha, | ||||
| #else | |||||
| FLOAT *alpha, | |||||
| #endif | |||||
| FLOAT *a, blasint lda, | FLOAT *a, blasint lda, | ||||
| FLOAT *b, blasint ldb, | FLOAT *b, blasint ldb, | ||||
| #ifndef COMPLEX | |||||
| FLOAT beta, | FLOAT beta, | ||||
| FLOAT *c, blasint ldc) { | |||||
| #else | #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 | #endif | ||||
| FLOAT *c, blasint ldc) { | |||||
| blas_arg_t args; | blas_arg_t args; | ||||
| int side, uplo; | 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, | blasint n, blasint k, | ||||
| #ifndef COMPLEX | #ifndef COMPLEX | ||||
| FLOAT alpha, | FLOAT alpha, | ||||
| #else | |||||
| FLOAT *alpha, | |||||
| #endif | |||||
| FLOAT *a, blasint lda, | FLOAT *a, blasint lda, | ||||
| FLOAT *b, blasint ldb, | FLOAT *b, blasint ldb, | ||||
| #else | |||||
| void *valpha, | |||||
| void *va, blasint lda, | |||||
| void *vb, blasint ldb, | |||||
| #endif | |||||
| #if !defined(COMPLEX) || defined(HEMM) | #if !defined(COMPLEX) || defined(HEMM) | ||||
| FLOAT beta, | FLOAT beta, | ||||
| #else | #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 | #endif | ||||
| FLOAT *c, blasint ldc) { | |||||
| blas_arg_t args; | blas_arg_t args; | ||||
| int uplo, trans; | int uplo, trans; | ||||
| @@ -101,6 +101,7 @@ void NAME(char *UPLO, char *TRANS, | |||||
| FLOAT *sa, *sb; | FLOAT *sa, *sb; | ||||
| #ifdef SMP | #ifdef SMP | ||||
| #ifdef USE_SIMPLE_THREADED_LEVEL3 | |||||
| #ifndef COMPLEX | #ifndef COMPLEX | ||||
| #ifdef XDOUBLE | #ifdef XDOUBLE | ||||
| int mode = BLAS_XDOUBLE | BLAS_REAL; | int mode = BLAS_XDOUBLE | BLAS_REAL; | ||||
| @@ -118,6 +119,7 @@ void NAME(char *UPLO, char *TRANS, | |||||
| int mode = BLAS_SINGLE | BLAS_COMPLEX; | int mode = BLAS_SINGLE | BLAS_COMPLEX; | ||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| #endif | |||||
| #endif | #endif | ||||
| blasint info; | 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) | #if !defined(COMPLEX) || defined(HEMM) | ||||
| FLOAT alpha, | FLOAT alpha, | ||||
| #else | #else | ||||
| FLOAT *alpha, | |||||
| void *valpha, | |||||
| #endif | #endif | ||||
| #if !defined(COMPLEX) | |||||
| FLOAT *a, blasint lda, | FLOAT *a, blasint lda, | ||||
| #else | |||||
| void *va, blasint lda, | |||||
| #endif | |||||
| #if !defined(COMPLEX) || defined(HEMM) | #if !defined(COMPLEX) || defined(HEMM) | ||||
| FLOAT beta, | FLOAT beta, | ||||
| #else | #else | ||||
| FLOAT *beta, | |||||
| void *vbeta, | |||||
| #endif | #endif | ||||
| #if !defined(COMPLEX) | |||||
| FLOAT *c, blasint ldc) { | 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; | blas_arg_t args; | ||||
| int uplo, trans; | int uplo, trans; | ||||
| @@ -206,6 +225,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, enum CBLAS_TRANSPOSE Tr | |||||
| FLOAT *sa, *sb; | FLOAT *sa, *sb; | ||||
| #ifdef SMP | #ifdef SMP | ||||
| #ifdef USE_SIMPLE_THREADED_LEVEL3 | |||||
| #ifndef COMPLEX | #ifndef COMPLEX | ||||
| #ifdef XDOUBLE | #ifdef XDOUBLE | ||||
| int mode = BLAS_XDOUBLE | BLAS_REAL; | 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; | int mode = BLAS_SINGLE | BLAS_COMPLEX; | ||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| #endif | |||||
| #endif | #endif | ||||
| PRINT_DEBUG_CNAME; | 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); | sb = (FLOAT *)(((BLASLONG)sa + ((GEMM_P * GEMM_Q * COMPSIZE * SIZE + GEMM_ALIGN) & ~GEMM_ALIGN)) + GEMM_OFFSET_B); | ||||
| #ifdef SMP | #ifdef SMP | ||||
| #ifdef USE_SIMPLE_THREADED_LEVEL3 | |||||
| if (!trans){ | if (!trans){ | ||||
| mode |= (BLAS_TRANSA_N | BLAS_TRANSB_T); | mode |= (BLAS_TRANSA_N | BLAS_TRANSB_T); | ||||
| } else { | } else { | ||||
| mode |= (BLAS_TRANSA_T | BLAS_TRANSB_N); | mode |= (BLAS_TRANSA_T | BLAS_TRANSB_N); | ||||
| } | } | ||||
| mode |= (uplo << BLAS_UPLO_SHIFT); | mode |= (uplo << BLAS_UPLO_SHIFT); | ||||
| #endif | |||||
| args.common = NULL; | args.common = NULL; | ||||
| args.nthreads = num_cpu_avail(3); | args.nthreads = num_cpu_avail(3); | ||||
| @@ -135,10 +135,17 @@ void NAME(char *UPLO, char *TRANS, char *DIAG, | |||||
| } | } | ||||
| #else | #else | ||||
| #ifndef COMPLEX | |||||
| void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, | void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, | ||||
| enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, | enum CBLAS_TRANSPOSE TransA, enum CBLAS_DIAG Diag, | ||||
| blasint n, FLOAT *a, FLOAT *x, blasint incx) { | 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; | int trans, uplo, unit; | ||||
| blasint info; | blasint info; | ||||
| @@ -218,8 +218,11 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo, | |||||
| buffer = (FLOAT *)blas_memory_alloc(1); | buffer = (FLOAT *)blas_memory_alloc(1); | ||||
| #ifdef SMP | #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) { | if (nthreads == 1) { | ||||
| #endif | #endif | ||||
| @@ -210,11 +210,16 @@ void CNAME(enum CBLAS_ORDER order, | |||||
| blasint m, blasint n, | blasint m, blasint n, | ||||
| #ifndef COMPLEX | #ifndef COMPLEX | ||||
| FLOAT alpha, | FLOAT alpha, | ||||
| #else | |||||
| FLOAT *alpha, | |||||
| #endif | |||||
| FLOAT *a, blasint lda, | FLOAT *a, blasint lda, | ||||
| FLOAT *b, blasint ldb) { | 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; | blas_arg_t args; | ||||
| int side, uplo, trans, unit; | int side, uplo, trans, unit; | ||||
| @@ -48,8 +48,12 @@ void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *BETA, FLOAT | |||||
| #else | #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 | #endif | ||||
| @@ -51,9 +51,14 @@ void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *y, blasint * | |||||
| blasint incy = *INCY; | blasint incy = *INCY; | ||||
| #else | #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){ | void CNAME(blasint n, FLOAT *ALPHA, FLOAT *x, blasint incx, FLOAT *y, blasint incy){ | ||||
| #endif | |||||
| #endif | #endif | ||||
| FLOAT alpha_r = *(ALPHA + 0); | FLOAT alpha_r = *(ALPHA + 0); | ||||
| @@ -148,13 +148,16 @@ OPENBLAS_COMPLEX_FLOAT NAME( blasint *N, FLOAT *x, blasin | |||||
| #else | #else | ||||
| #ifdef FORCE_USE_STACK | #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 | #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 ret; | ||||
| OPENBLAS_COMPLEX_FLOAT zero=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0); | OPENBLAS_COMPLEX_FLOAT zero=OPENBLAS_MAKE_COMPLEX_FLOAT(0.0, 0.0); | ||||
| #endif | #endif | ||||
| FLOAT *x = (FLOAT*) vx; | |||||
| FLOAT *y = (FLOAT*) vy; | |||||
| PRINT_DEBUG_CNAME; | PRINT_DEBUG_CNAME; | ||||
| @@ -149,11 +149,17 @@ void CNAME(enum CBLAS_ORDER order, | |||||
| enum CBLAS_TRANSPOSE TransA, | enum CBLAS_TRANSPOSE TransA, | ||||
| blasint m, blasint n, | blasint m, blasint n, | ||||
| blasint ku, blasint kl, | 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_r = ALPHA[0]; | ||||
| FLOAT alpha_i = ALPHA[1]; | FLOAT alpha_i = ALPHA[1]; | ||||
| @@ -134,12 +134,17 @@ void NAME(char *TRANS, blasint *M, blasint *N, | |||||
| void CNAME(enum CBLAS_ORDER order, | void CNAME(enum CBLAS_ORDER order, | ||||
| enum CBLAS_TRANSPOSE TransA, | enum CBLAS_TRANSPOSE TransA, | ||||
| blasint m, blasint n, | 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; | FLOAT *buffer; | ||||
| blasint lenx, leny; | blasint lenx, leny; | ||||
| int trans, buffer_size; | int trans, buffer_size; | ||||
| @@ -141,10 +141,15 @@ void NAME(blasint *M, blasint *N, FLOAT *Alpha, | |||||
| void CNAME(enum CBLAS_ORDER order, | void CNAME(enum CBLAS_ORDER order, | ||||
| blasint m, blasint n, | 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_r = Alpha[0]; | ||||
| FLOAT alpha_i = Alpha[1]; | FLOAT alpha_i = Alpha[1]; | ||||