head	1.2;
access;
symbols
	pkgsrc-2025Q4:1.1.0.38
	pkgsrc-2025Q4-base:1.1
	pkgsrc-2025Q3:1.1.0.36
	pkgsrc-2025Q3-base:1.1
	pkgsrc-2025Q2:1.1.0.34
	pkgsrc-2025Q2-base:1.1
	pkgsrc-2025Q1:1.1.0.32
	pkgsrc-2025Q1-base:1.1
	pkgsrc-2024Q4:1.1.0.30
	pkgsrc-2024Q4-base:1.1
	pkgsrc-2024Q3:1.1.0.28
	pkgsrc-2024Q3-base:1.1
	pkgsrc-2024Q2:1.1.0.26
	pkgsrc-2024Q2-base:1.1
	pkgsrc-2024Q1:1.1.0.24
	pkgsrc-2024Q1-base:1.1
	pkgsrc-2023Q4:1.1.0.22
	pkgsrc-2023Q4-base:1.1
	pkgsrc-2023Q3:1.1.0.20
	pkgsrc-2023Q3-base:1.1
	pkgsrc-2023Q2:1.1.0.18
	pkgsrc-2023Q2-base:1.1
	pkgsrc-2023Q1:1.1.0.16
	pkgsrc-2023Q1-base:1.1
	pkgsrc-2022Q4:1.1.0.14
	pkgsrc-2022Q4-base:1.1
	pkgsrc-2022Q3:1.1.0.12
	pkgsrc-2022Q3-base:1.1
	pkgsrc-2022Q2:1.1.0.10
	pkgsrc-2022Q2-base:1.1
	pkgsrc-2022Q1:1.1.0.8
	pkgsrc-2022Q1-base:1.1
	pkgsrc-2021Q4:1.1.0.6
	pkgsrc-2021Q4-base:1.1
	pkgsrc-2021Q3:1.1.0.4
	pkgsrc-2021Q3-base:1.1
	pkgsrc-2021Q2:1.1.0.2
	pkgsrc-2021Q2-base:1.1;
locks; strict;
comment	@# @;


1.2
date	2026.02.24.23.09.02;	author thor;	state dead;
branches;
next	1.1;
commitid	LkkOtNI91FnUtGvG;

1.1
date	2021.05.29.19.57.21;	author thor;	state Exp;
branches;
next	;
commitid	LGqoDHv3mwFW45VC;


desc
@@


1.2
log
@openblas: update to 0.3.31

OpenBLAS ChangeLog
====================================================================
Version 0.3.31
15-Jan-2025

general:
 - reverted a matrix partitioning optimization from 0.3.30 that could lead to
   race conditions and subsequent invalid results in GEMM
 - added the bfloat16 extensions BGEMM and BGEMV
 - added a BLAS interface for the ?GEMM_BATCH extensions
 - added the BLAS extensions ?GEMM_BATCH_STRIDED and their CBLAS interface
 - added the basic infrastructure for half-precision float (FP16) format
   using SH prefix
 - reimplemented the LAPACK SLAED3/DLAED3 function using multithreading, thereby
   improving the performance of the SSYEVD/DSYEVD eigensolver for symmetric matrices
   on all platforms
 - limited the number of retries for initial memory allocation to avoid infinite
   hanging on low-memory systems
 - fixed a thread lockup situation encountered with python 3.9 or older and numpy
 - introduced a problem size threshold for multithreading in STRMV/DTRMV
 - introduced a problem size threshold for multithreading in CHER/CHER2/CHPR/CHPR2
   and ZHER/ZHER2/ZHPR/ZHPR2
 - improved the problem size thresholds for multithreading in SGER/DGER
 - improved autodetection of the Fortran compiler
 - fixed passing of the INTERFACE64=1 option to the flang-new compiler
 - fixed a potential deadlock in multithreaded code after calling fork()
 - fixed builds using CMake on FreeBSD
 - fixed builds using CMake from within Cygwin on Windows
 - fixed builds using CMake and the NVHPC compiler on ARM64
 - fixed CMake build error from misdetecting compiler or OpenMP versions
 - improved contents of the CMake-generated OpenBLASConfig.cmake file
 - added support for cross-compilation to RISCV targets via CMake
 - fixed cross-compilation to x86 targets from non-x86 architectures
 - fixed failure to install cblas.h if NO_CBLAS=0 was specified
 - fixed missing user-defined pre- and postfixes on functions in lapack.h,lapacke.h
 - included fixes from the Reference-LAPACK project:
   - fix ordering bug in ?LAED/?LASD (Reference-LAPACK PR 1140)
   - revert changes in ?GEEV from PR 1129 (Reference-LAPACK PR 1142)
   - fix workspace allocation in LAPACKE_?TRSEN (Reference-LAPACK PR 1144)

riscv:
 - added optimized SBGEMM kernels for ZVL128B and ZVL256B targets
 - added optimized SHGEMM kernels for ZVL128B and ZVL256B targets
 - added optimized SBGEMV and SHGEMV kernels for ZVL128B/ZVL256B
 - improved performance of the GEMV kernel for ZVL256B
 - improved the performance of the CROT and ZROT kernels for ZVL128B and x280
 - improved the detection of RVV1.0 capability
 - improved performance of the matrix packing helper functions for ZVL128B and ZVL256B
 - improved performance of OMATCOPY for ZVL128B and ZVL256B

arm:
 - fixed spurious executable stack in the getarch utility

arm64:
 - fixed spurious executable stack in the getarch utility
 - fixed compiler warnings arising from the timer macro RPCC
 - fixed cache size detection for Qualcomm Oryon under Windows on Arm
 - fixed argument handling in the default SVE kernel for SDOT/DDOT
 - building the BFLOAT16 kernels is now enabled by default
 - improved the overall performance of GEMM,SYMM and HEMM on A64FX
 - improved the performance of SDOT/DDOT on A64FX
 - improved the multithreading performance of SDOT/DDOT on A64FX by
   introduction of a throttling table matching thread count to problem size
 - improved the performance of SGER/DGER on A64FX and NEOVERSEV1
 - improved the multithreading performance of GEMM on A64FX and NEOVERSEV1
 - improved the performance of the GEMV kernel for SVE-capable targets
 - improved the multithreading performance of SGEMM on NEOVERSEV1 and V2
 - added optimized SAXPY/DAXPY SVE kernels for A64FX and NEOVERSEV1
 - added optimized BGEMM and BGEMV kernels for NEOVERSEV1
 - added an optimized BGEMM kernel for NEOVERSEN2
 - added support for the NEOVERSEV2 cpu
 - added dedicated support for the Apple M4 cpu as VORTEXM4
 - added optimized SGEMM/SSYMM/STRMM/SSYRK/SSYR2K for SME-capable targets
   (ARMV9SME and VORTEXM4)
 - improved the precision of the SNRM2 kernel
 - added cpu autodetection and compiler settings for Ampere One processors
 - fixed cpu autodetection for Apple M systems running Linux
 - fixed building on MacOS with AppleClang,gfortran and xcode v16 or newer
 - fixed several errors in the C code replacements for the complex and double
   precision complex LAPACK functions that get used (only) when compiling with
   Microsoft C and NOFORTRAN=1 under MS Windows

power:
 - added initial support for the POWER11 architecture
 - improved performance of DGEMM and DGEMV on POWER10
 - fixed the default compiler flags to use "-O3" instead of the possibly unsafe
   "-Ofast"
 - fixed building under MacOS (for old G4 Macs) with CMake
 - fixed potential miscompilation of DGEMV and other assembly kernels by gcc15.1
 - fixed compilation with recent versions of flang

loongarch64:
 - fixed warnings and potential inaccuracies arising from incorrect saving of registers
 - fixed enumeration of logical cores on big NUMA servers
 - fixed building with LLVM and the INTERFACE64=1 option

x86:
 - fixed building the GEMM3M kernels for the GENERIC target
 - fixed several errors in the C code replacements for the complex and double
   precision complex LAPACK functions that get used (only) when compiling with
   Microsoft C and NOFORTRAN=1 under MS Windows

x86_64:
 - added cpu autodetection for Intel Lunar Lake (Core Ultra 200V)
 - changed all ?MIN and ?MAX assembly kernels to use unaligned operations
 - fixed several errors in the C code replacements for the complex and double
   precision complex LAPACK functions that get used (only) when compiling with
   Microsoft C and NOFORTRAN=1 under MS Windows
 - fixed potential crashes in builds for Cooper Lake, Sapphire Rapids or Zen5 cpus
   under MS Windows

zarch:
 - added support for building with CMake

sparc:
 - fixed a potential crash in the DNRM2 kernel

====================================================================
Version 0.3.30
19-Jun-2025

general:
 - fixed an installation problem with the thread safety test in gmake builds
 - fixed spurious overwriting of an input array in complex GEMMT/GEMMTR
 - fixed naming of GEMMTR in error messages from XERBLA
 - fixed compilation of SBGEMMT/SBGEMMTR in CMake builds
 - fixed the implementation of ?NRM2 to handle INCX=0 correctly
 - removed tests for CSROT and ZDROT that relied on unspecified behavior
 - fixed a performance regression in multithreaded GEMM that was particularly
   serious on POWER targets
 - fixed linking issues when using LLVM's flang-new with gmake
 - fixed a potential thread safety problem with C11 atomic operations
 - further improved the workload partitioning in parallel GEMM
 - fixed omission of LAPACKE interfaces for CGESVDQ,CTRSYL3 and ?GEQPF in
   CMake builds
 - fixed mishandling of setting NO_LAPACK to FALSE, and incorrect dependencies
   for LAPACK function SPMV in CMake builds
 - added explicit CMake options for building LAPACKE and shared libraries
 - simplified and improved handling of OpenMP options in CMake builds
 - reworked Windows DLL generation in CMake builds to ensure correct symbol
   renaming (pre/postfixing) and optional generation of PDB files for debugging
 - updated the Perl script version of the gensymbol utility for use with
   Windows-on-Arm
 - Fixed building with (Mingw) gmake on Windows to ensure completeness of the
   LAPACK included in the static library (potential race condition due to the
   Windows version of the "ln" utility creating snapshot copies rather than links)
 - fixed unwanted deletion of the lapacke_mangling.h file by "make clean"
 - fixed potential duplication of a _64 suffix on library names in CMake builds
 - fixed compilation of the C fallback copies of the LAPACK code with GCC 15
 - included fixed from the Reference-LAPACK project:
   - fixed a truncated error message in the EIG part of the testsuite
     (Reference-LAPACK PR 1119)
   - fixed too strict check in LAPACKE_?gesdd_work (PR #1126)
   - fixed memory corruption when calling ?GEEV with non-finite data (PR #1128)
   - fixed missing initialization of a variable in C/GEQP3RK (PR #1131)
   - fixed 2nd dimension chosen in C/ZUNMLQ transposition operation (PR #1135)

x86_64:
 - fixed an error in the SBGEMV kernel for Cooper Lake/Sapphire Rapids
 - fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
 - improved the compiler identification code for flang-new
 - fixed a potential build issue in the ZSUM kernel
 - fixed "argument list too long" errors when building on MacOS
 - added cpu autodetection support for several new Arrow Lake models
 - fixed conditional inclusion of the fast path SGEMM kernel in DYNAMIC_ARCH
 - fixed compilation with the MinGW build of GCC 15

arm64:
 - fixed cpu type detection of A64FX and some ThunderX models (broken in 0.3.29)
 - added support for the AmpereOne/1A cpus in DYNAMIC_ ARCH builds
 - added an optimized SBGEMM kernel for NEOVERSEV1
 - improved 1xN SBGEMM performance by forwarding to SBGEMV
 - introduced a stepwise increase of the thread count used for
   SGEMM and SGEMV on NEOVERSEV1/V2 in relation to problem size
 - introduced a stepwise increase of the thread count used for
   DGEMV on NEOVERSEV1 in relation to problem size
 - introduced a stepwise increase of the thread count used for
   SDOT and DDOT on NEOVERSEV1 in relation to problem size
 - worked around assembler limitations in LLVM for Windows-on-Arm
 - enabled cpu type autodetection from the registry on Windows-on-Arm
 - improved multithreading threshold for GEMV and GESV on Windows-on-Arm
 - fixed overoptimization issues with LLVM's flang in Windows-on-Arm
 - fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
 - added a fast path SGEMM kernel for small workloads on SME capable targets
 - improved performance of SGEMM and DGEMM kernels for small workloads
 - improved performance of SGEMV and DGEMV on SVE-capable targets
 - improved performance of SGEMV on NEOVERSEN1 and Apple M
 - added optimized SSYMV and DSYMV kernels for NEOVERSEN1, Apple M and all
   SVE capable targets
 - added optimized SBGEMV kernels for NEOVERSEV1/V2/N2
 - improved performance of SGEMM through faster NCOPY kernels
 - added compiler options for the NVIDIA HPC Compiler Suite
 - fixed compilation on OSX with XCode 16.3 and later
 - fixed cpu core type and cache size detection on Apple M4
 - updated GEMM parameter settings for Neoverse cpus in cross-builds with CMake
 - fixed default compiler options for NEOVERSEN1 and CORTEXX2 in CMake builds
 - fixed conditional inclusion of the fast path SGEMM kernel in DYNAMIC_ARCH
 - fixed potential miscompilation of the non-SVE SDOT kernel

riscv64:
 - added optimized SROTM and DROTM kernels for x280
 - fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
 - improved performance of GEMM_TCOPY on RVV1.0 targets with
   VLEN of 128 or 256
 - improved performance of OMATCOPY on targets with VLEN 256
 - greatly improved performance of SGEMV/DGEMV
 - improved performance of CGEMV and ZGEMV on C910V and all RVV targets
   with VLEN 256
 - improved performance of SAXPBY and DAXPBY on C910V and all RVV targets
   with VLEN 256
 - improved performance of AXPY and DOT on C910V and ZVL256B targets by
   falling back to non-vectorized code for very small N. (Thereby fixing
   poor performance of CHBMV/ZHBMV for very small K)
 - fixed CMake build failures of the TRMM kernels

loongarch64:
 - improved performance of the LSX versions of SSYMV/DSYMV
 - made the LASX versions of the DSYMV and SSYMV kernels
   compatible with hardware changes in LA664 and future targets
 - fixed inaccuracies in several LASX kernels
 - improved compatibility of LSX kernels with LA264 targets
 - fixed handling of deprecated target names in CMake builds
 - fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL

power:
 - fixed building for PPCG4 with CMake
 - fixed SSCAL/DSCAL on PPC970 running FreeBSD
 - fixed a potential alignment issue in the POWER8 SGEMV kernel
 - fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL

zarch:
 - fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
 - fixed unwanted generation of object files with a writable stack

x86:
 - fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
 - worked around potential miscompilation of CDOT with very old binutils

arm:
 - fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL
 - fixed unwanted generation of object files with a writable stack

sparc:
 - fixed corner cases of NAN and INF input handling in CSCAL and ZSCAL

alpha:
 - fixed build failure caused by spurious Windows-only typecasts

cell:
 - fixed probable build issue caused by spurious Windows-only typecasts

====================================================================
Version 0.3.29
12-Jan-2025

general:
 - fixed a potential NULL pointer dereference in multithreaded builds
 - added function aliases for GEMMT using its new name GEMMTR adopted by Reference-BLAS
 - fixed a build failure when building without LAPACK_DEPRECATED functions
 - the minimum required CMake version for CMake-based builds was raised to 3.16.0 in order
   to remove many compatibility and deprecation warnings
 - added more detailed CMake rules for OpenMP builds (mainly to support recent LLVM)
 - fixed the behavior of the recently added CBLAS_?GEMMT functions with row-major data
 - improved thread scaling of multithreaded SBGEMV
 - improved thread scaling of multithreaded TRTRI
 - fixed compilation of the CBLAS testsuite with gcc14 (and no Fortran compiler)
 - added support for option handling changes in flang-new from LLVM18 onwards
 - added support for recent calling conventions changes in Cray and NVIDIA compilers
 - added support for compilation with the NAG Fortran compiler
 - fixed placement of the -fopenmp flag and libsuffix in the generated pkgconfig file
 - improved the CMakeConfig file generated by the Makefile build
 - fixed const-correctness of cblas_?geadd in cblas.h
 - fixed a potential inaccuracy in multithreaded BLAS3 calls
 - fixed empty implementations of get/set_affinity that print a warning in OpenMP builds
 - fixed function signatures for TRTRS in the converted C version of LAPACK
 - fixed omission of several single-precision LAPACK symbols in the shared library
 - improved build instructions for the provided "pybench" benchmarks
 - improved documentation, including added build instructions for WoA and HarmonyOS
   as well as descriptions of environment variables that affect build and runtime behavior
 - added a separate "make install_tests" target for use with cross-compilations
 - integrated improvements and corrections from Reference-LAPACK:
   - removed a comparison in LAPACKE ?tpmqrt that is always false (LAPACK PR 1062)
   - fixed the leading dimension for B in tests for GGEV (LAPACK PR 1064)
   - replaced the ?LARFT functions with a recursive implementation (LAPACK PR 1080)

arm:
 - fixed build with recent versions of the NDK (missing .type declaration of symbols)

arm64:
 - fixed a long-standing bug in the (generic) c/zgemm_beta kernel that could lead to
   reads and writes outside the array bounds in some circumstances
 - rewrote cpu autodetection to scan all cores and return the highest performing type
 - improved the DGEMM performance for SVE targets and small matrix sizes
 - improved dimension criteria for forwarding from GEMM to GEMV kernels
 - added SVE kernels for ROT and SWAP
 - improved SVE kernels for SGEMV and DGEMV on A64FX and NEOVERSEV1
 - added support for using the "small matrix" kernels with CMake as well
 - fixed compilation on Windows on Arm
 - improved compile-time detection of SVE capability
 - added cpu autodetection and initial support for Apple M4
 - added support for compilation on systems running IOS
 - added support for compilation on NetBSD ("evbarm" architecture)
 - fixed NRM2 implementations for generic SVE targets and the Neoverse N2
 - fixed compilation for SVE-capable targets with the NVIDIA compiler

x86_64:
 - fixed a wrong storage size in the SBGEMV kernel for Cooper Lake
 - added cpu autodetection for Intel Granite Rapids
 - added cpu autodetection for AMD Ryzen 5 series
 - added optimized SOMATCOPY_CT for AVX-capable targets
 - fixed the fallback implementation of GEMM3M in GENERIC builds
 - tentatively re-enabled builds with the EXPRECISION option
 - worked around a miscompilation of tests with mingw32-gfortran14
 - added support for compilation with the Intel oneAPI 2025.0 compiler on Windows

power:
 - fixed multithreaded SBGEMM
 - fixed a CMake build problem on POWER10
 - improved the performance of SGEMV
 - added vectorized implementations of SBGEMV and support for forwarding 1xN SBGEMM to them
 - fixed illegal instructions and potential memory overflow in SGEMM on PPCG4
 - fixed handling of NaN and Inf arguments in SSCAL and DSCAL on PPC440,G4 and 970
 - added improved CGEMM and ZGEMM kernels for POWER10
 - added Makefile logic to remove all optimization flags in DEBUG builds

mips64:
 - fixed compilation with gcc14
 - fixed GEMM parameter selection for the MIPS64_GENERIC target
 - fixed a potential build failure when compiling with OpenMP

loongarch64:
 - fixed compilation for Loongson3 with recent versions of gmake
 - fixed a potential loss of precision in Loongson3A GEMM
 - fixed a potential build failure when compiling with OpenMP
 - added optimized SOMATCOPY for LASX-capable targets
 - introduced a new cpu naming scheme while retaining compatibility
 - added support for cross-compiling Loongarch64 targets with CMake
 - added support for compilation with LLVM

riscv64:
 - removed thread yielding overhead caused by sched_yield
 - replaced some non-standard intrinsics with their official names
 - fixed and sped up the implementations of CGEMM/ZGEMM TCOPY for vector lenghts 128 and 256
 - improved the performance of SNRM2/DNRM2 for RVV1.0 targets
 - added optimized ?OMATCOPY_CN kernels for RVV1.0 targets

====================================================================
Version 0.3.28
 8-Aug-2024

general:
- Reworked the unfinished implementation of HUGETLB from GotoBLAS
  for allocating huge memory pages as buffers on suitable systems
- Changed the unfinished implementation of GEMM3M for the generic
  target on all architectures to at least forward to regular GEMM
- Improved multithreaded GEMM performance for large non-skinny matrices
- Improved BLAS3 performance on larger multicore systems through improved
  parallelism
- Improved performance of the initial memory allocation by reducing
  locking overhead
- Improved performance of GBMV at small problem sizes by introducing
  a size barrier for the switch to multithreading
- Added an implementation of the CBLAS_GEMM_BATCH extension
- Fixed miscompilation of CAXPYC and ZAXPYC on all architectures in
  CMAKE builds (error introduced in 0.3.27)
- Fixed corner cases involving the handling of NAN and INFINITY
  arguments in ?SCAL on all architectures
- Added support for cross-compiling to WEBM with CMAKE (in addition
  to the already present makefile support)
- Fixed NAN handling and potential accuracy issues in compilations with
  Intel ICX by supplying a suitable fp-model option by default
- The contents of the github project wiki have been converted into
  a new set of documentation included with the source code.
- It is now possible to register a callback function that replaces
  the built-in support for multithreading with an external backend
  like TBB (openblas_set_threads_callback_function)
- Fixed potential duplication of suffixes in shared library naming
- Improved C compiler detection by the build system to tolerate more
  naming variants for gcc builds
- Fixed an unnecessary dependency of the utest on CBLAS
- Fixed spurious error reports from the BLAS extensions utest
- Fixed unwanted invocation of the GEMM3M tests in cross-compilation
- Fixed a flaw in the makefile build that could lead to the pkgconfig
  file containing an entry of UNKNOWN for the target cpu after installing
- Integrated fixes from the Reference-LAPACK project:
  - Fixed uninitialized variables in the LAPACK tests for ?QP3RK (PR 961)
  - Fixed potential bounds error in ?UNHR_COL/?ORHR_COL (PR 1018)
  - Fixed potential infinite loop in the LAPACK testsuite (PR 1024)
  - Make the variable type used for hidden length arguments configurable (PR 1025)
  - Fixed SYTRD workspace computation and various typos (PR 1030)
  - Prevent compiler use of FMA that could increase numerical error in ?GEEVX (PR 1033)

x86-64:
- reverted thread management under Windows to its state before 0.3.26
  due to signs of race conditions in some circumstances now under study
- fixed accidental selection of the unoptimized generic SBGEMM kernel
  in CMAKE builds for CooperLake and SapphireRapids targets
- fixed a potential thread buffer overrun in SBSTOBF16 on small systems
- fixed an accuracy issue in ZSCAL introduced in 0.3.26
- fixed compilation with CMAKE and recent releases of LLVM
- added support for Intel Emerald Rapids and Meteor Lake cpus
- added autodetection support for the Zhaoxin KX-7000 cpu
- fixed autodetection of Intel Prescott (probably broken since 0.3.19)
- fixed compilation for older targets with the Yocto SDK
- fixed compilation of the converter-generated C versions
  of the LAPACK sources with gcc-14
- improved compiler options when building with CMAKE and LLVM for
  AVX512-capable targets
- added support for supplying the L2 cache size via an environment
  variable (OPENBLAS_L2_SIZE) in case it is not correctly reported
  (as in some VM configurations)
- improved the error message shown when thread creation fails on startup
- fixed setting the rpath entry of the dylib in CMAKE builds on MacOS

arm:
- fixed building for baremetal targets with make

arm64:
- Added a fast path forwarding SGEMM and DGEMM calls with a 1xN or Mx1
  matrix to the corresponding GEMV kernel
- added optimized SGEMV and DGEMV kernels for A64FX
- added optimized SVE kernels for small-matrix GEMM
- added A64FX to the cpu list for DYNAMIC_ARCH
- fixed building with support for cpu affinity
- worked around accuracy problems with C/ZNRM2 on NeoverseN1 and
  Apple M targets
- improved GEMM performance on Neoverse V1
- fixed compilation for NEOVERSEN2 with older compilers
- fixed potential miscompilation of the SVE SDOT and DDOT kernels
- fixed potential miscompilation of the non-SVE CDOT and ZDOT kernels
- fixed a potential overflow when using very large user-defined BUFFERSIZE
- fixed setting the rpath entry of the dylib in CMAKE builds on MacOS

power:
- Added a fast path forwarding SGEMM and DGEMM calls with a 1xN or Mx1
  matrix to the corresponding GEMV kernel
- significantly improved performance of SBGEMM on POWER10
- fixed compilation with OpenMP and the XLF compiler
- fixed building of the BLAS extension utests under AIX
- fixed building of parts of the LAPACK testsuite with XLF
- fixed CSWAP/ZSWAP on big-endian POWER10 targets
- fixed a performance regression in SAXPY on POWER10 with OpenXL
- fixed accuracy issues in CSCAL/ZSCAL when compiled with LLVM
- fixed building for POWER9 under FreeBSD
- fixed a potential overflow when using very large user-defined BUFFERSIZE
- fixed an accuracy issue in the POWER6 kernels for GEMM and GEMV

riscv64:
- Added a fast path forwarding SGEMM and DGEMM calls with a 1xN or Mx1
  matrix to the corresponding GEMV kernel
- fixed building for RISCV64_GENERIC with OpenMP enabled
- added DYNAMIC_ARCH support (comprising GENERIC_RISCV64 and the two
  RVV 1.0 targets with vector length of 128 and 256)
- worked around the ZVL128B kernels for AXPBY mishandling the special
  case of zero Y increment

loongarch64:
- improved GEMM performance on servers of the 3C5000 generation
- improved performance and stability of DGEMM
- improved GEMV and TRSM kernels for LSX and LASX vector ABIs
- fixed CMAKE compilation with the INTERFACE64 option set
- fixed compilation with CMAKE
- worked around spurious errors flagged by the BLAS3 tests
- worked around a miscompilation of the POTRS utest by gcc 14.1

mips64:
- fixed ASUM and SUM kernels to accept negative step sizes in X
- fixed complex GEMV kernels for MSA

====================================================================
Version 0.3.27
 4-Apr-2024

general:
- added initial (generic) support for the CSKY architecture
- capped the maximum number of threads used in GEMM, GETRF and POTRF to avoid creating
  underutilized or idle threads
- sped up multithreaded POTRF on all platforms
- added extension openblas_set_num_threads_local() that returns the previous thread count
- re-evaluated the SGEMV and DGEMV load thresholds to avoid activating multithreading
  for too small workloads
- improved the fallback code used when the precompiled number of threads is exceeded,
  and made it callable multiple times during the lifetime of an instance
- added CBLAS interfaces for the BLAS extensions ?AMIN,?AMAX, CAXPYC and ZAXPYC
- fixed a potential buffer overflow in the interface to the GEMMT kernels
- fixed use of incompatible pointer types in GEMMT and C/ZAXPBY as flagged by GCC-14
- fixed unwanted case sensitivity of the character parameters in ?TRTRS
- sped up the OpenMP thread management code
- fixed sizing of logical variables in INTERFACE64 builds of the C version of LAPACK
- fixed inclusion of new LAPACK and LAPACKE functions from LAPACK 3.11 in the shared library
- added a testsuite for the BLAS extensions
- modified the error thresholds for SGS/DGS functions in the LAPACK testsuite to suppress
  spurious errors
- added support for building the benchmark collection with CMAKE
- added rewriting of linker options to avoid linking both libgomp and libomp in CMAKE builds
  with OpenMP enabled that use clang with gfortran
- fixed building on systems with ucLibc
- added support for calling ?NRM2 with a negative increment value on all architectures
- added support for the LLVM18 version of the flang-new compiler
- fixed handling of the OPENBLAS_LOOPS variable in several benchmarks
- Integrated fixes from the Reference-LAPACK project:
  - Increased accuracy in C/ZLARFGP (Reference-LAPACK PR 981)

x86:
- fixed handling of NaN and Inf arguments in ZSCAL
- fixed GEMM3M functions failing in CMAKE builds

x86-64:
- removed all instances of sched_yield() on Linux and BSD
- fixed a potential deadlock in the thread server on MSWindows (introduced in 0.3.26)
- fixed GEMM3M functions failing in CMAKE builds
- fixed handling of NaN and Inf arguments in ZSCAL
- added compiler checks for AVX512BF16 compatibility
- fixed LLVM compiler options for Sapphire Rapids
- fixed cpu handling fallbacks for Sapphire Rapids with
  disabled AVX2 in DYNAMIC_ARCH mode
- fixed extensions SCSUM and DZSUM
- improved GEMM performance for ZEN targets

arm:
- fixed handling of NaN and Inf arguments in ZSCAL

arm64:
- added initial support for the Cortex-A76 cpu
- fixed handling of NaN and Inf arguments in ZSCAL
- fixed default compiler options for gcc (-march and -mtune)
- added support for ArmCompilerForLinux
- added support for the NeoverseV2 cpu in DYNAMIC_ARCH builds
- fixed mishandling of the INTERFACE64 option in CMAKE builds
- corrected SCSUM kernels (erroneously duplicating SCASUM behaviour)
- added SVE-enabled kernels for CSUM/ZSUM
- worked around an inaccuracy in the NRM2 kernels for NeoverseN1 and Apple M

power:
- improved performance of SGEMM on POWER8/9/10
- improved performance of DGEMM on POWER10
- added support for OpenMP builds with xlc/xlf on AIX
- improved cpu autodetection for DYNAMIC_ARCH builds on older AIX
- fixed cpu core counting on AIX
- added support for building a shared library on AIX

riscv64:
- added support for the X280 cpu
- added support for semi-generic RISCV models with vector length 128 or 256
- added support for compiling with either RVV 0.7.1 or RVV 1.0 standard compilers
- fixed handling of NaN and Inf arguments in ZSCAL
- improved cpu model autodetection
- fixed corner cases in ?AXPBY for C910V
- fixed handling of zero increments in ?AXPY kernels for C910V

loongarch64:
- added optimized kernels for ?AMIN and ?AMAX
- fixed handling of NaN and Inf arguments in ZSCAL
- fixed handling of corner cases in ?AXPBY
- fixed computation of SAMIN and DAMIN in LSX mode
- fixed computation of ?ROT
- added optimized SSYMV and DSYMV kernels for LSX and LASX mode
- added optimized CGEMM and ZGEMM kernels for LSX and LASX mode
- added optimized CGEMV and ZGEMV kernels

mips:
- fixed utilizing MSA on P5600 and related cpus (broken in 0.3.22)
- fixed handling of NaN and Inf arguments in ZSCAL
- fixed mishandling of the INTERFACE64 option in CMAKE builds

zarch:
- fixed handling of NaN and Inf arguments in ZSCAL
- fixed calculation of ?SUM on Z13
@
text
@$NetBSD: patch-Makefile.rule,v 1.1 2021/05/29 19:57:21 thor Exp $

Stable library names, determined by our choice only.

--- Makefile.rule.orig	2021-05-02 21:50:22.000000000 +0000
+++ Makefile.rule
@@@@ -10,6 +10,10 @@@@ VERSION = 0.3.15
 # is libopenblas_$(LIBNAMESUFFIX).so.0.
 # LIBNAMESUFFIX = omp
 
+# Set this to cause the primary library name be actually ruled by the above,
+# not just a symlink to a library name determined by chosen CPU etc.
+# FIXED_LIBNAME = 1
+
 # You can specify the target architecture, otherwise it's
 # automatically detected.
 # TARGET = PENRYN
@


1.1
log
@math/openblas: update to version 0.3.15

This includes a rework of our patchery with the hope of upstreaming a good deal
of it.

These are the upstream changes since 0.3.10:

Version 0.3.15
  2-May-2021

common:
 - imported improvements and bugfixes from Reference-LAPACK 3.9.1
 - imported LAPACKE interface fixes from Reference-LAPACK PRs 534 + 537
 - fixed a problem in the cpu detection of 0.3.14 that prevented cross-compilation
 - fixed a sequence problem in the generation of softlinks to the library in GMAKE

RISC V:
 - fixed compilation on RISCV (missing entry in getarch)
 - fixed a potential division by zero in CROTG and ZROTG

POWER:
 - fixed LAPACK testsuite failures seen with the NVIDIA HPC compiler
 - improved CGEMM, DGEMM and ZGEMM performance on POWER10
 - added an optimized ZGEMV kernel for POWER10
 - fixed a potential division by zero in CROTG and ZROTG

x86_64:
 - added support for Intel Control-flow Enforcement Technology (CET)
 - reverted the DOMATCOPY_RT code to the generic C version
 - fixed a bug in the AVX512 SGEMM kernel introduced in 0.3.14
 - fixed misapplication of -msse flag to non-SSE cpus in DYNAMIC_ARCH
 - added support for compilation of the benchmarks on older OSX versions
 - fix propagation of the NO_AVX512 option in CMAKE builds
 - fix compilation of the AVX512 SGEMM kernel with clang-cl on Windows
 - fixed compilation of the CTESTs with INTERFACE64=1 (random faults on OSX)
 - corrected the Haswell DROT kernel to require AVX2/FMA3 rather than AVX512

ARM:
 - fixed a potential division by zero in CROTG and ZROTG
 - fixed a potential overflow in IMATCOPY/ZIMATCOPY and the CTESTs

ARM64:
 - fixed spurious reads outside the array in the SGEMM tcopy macro
 - fixed a potential division by zero in CROTG and ZROTG
 - fixed a segmentation fault in DYNAMIC_ARCH builds (reappeared in 0.3.14)

MIPS
 - fixed a potential division by zero in CROTG and ZROTG
 - fixed a potential overflow in IMATCOPY/ZIMATCOPY and the CTESTs

MIPS64:
 - fixed a potential division by zero in CROTG and ZROTG

SPARC:
 - fixed a potential division by zero in CROTG and ZROTG

====================================================================
Version 0.3.14
 17-Mar-2021

 common:
	* Fixed a race condition on thread shutdown in non-OpenMP builds
	* Fixed custom BUFFERSIZE option getting ignored in gmake builds
	* Fixed CMAKE compilation of the TRMM kernels for GENERIC platforms
	* Added CBLAS interfaces for CROTG, ZROTG, CSROT and ZDROT
	* Improved performance of OMATCOPY_RT across all platforms
	* Changed perl scripts to use env instead of a hardcoded /usr/bin/perl
	* Fixed potential misreading of the GCC compiler version in the build scripts
	* Fixed convergence problems in LAPACK complex GGEV/GGES (Reference-LAPACK #477)
	* Reduced the stacksize requirements for running the LAPACK testsuite (Reference-LAPACK #335)

 RISCV:
 	* Fixed compilation on RISCV (missing entry in getarch)

 POWER:
 	* Fixed compilation for DYNAMIC_ARCH with clang and with old gcc versions
	* Added support for compilation on FreeBSD/ppc64le
 	* Added optimized POWER10 kernels for SSCAL, DSCAL, CSCAL, ZSCAL
	* Added optimized POWER10 kernels for SROT, DROT, CDOT, SASUM, DASUM
	* Improved SSWAP, DSWAP, CSWAP, ZSWAP performance on POWER10
	* Improved SCOPY and CCOPY performance on POWER10
	* Improved SGEMM and DGEMM performance on POWER10
	* Added support for compilation with the NVIDIA HPC compiler

 x86_64:
	* Added an optimized bfloat16 GEMM kernel for Cooperlake
	* Added CPUID autodetection for Intel Rocket Lake and Tiger Lake cpus
	* Improved the performance of SASUM,DASUM,SROT,DROT on AMD Ryzen cpus
	* Added support for compilation with the NAG Fortran compiler
	* Fixed recognition of the AMD AOCC compiler
	* Fixed compilation for DYNAMIC_ARCH with clang on Windows
	* Added support for running the BLAS/CBLAS tests on Windows
	* Fixed signatures of the tls callback functions for Windows x64
	* Fixed various issues with fma intrinsics support handling

 ARM:
	* Added support for embedded Cortex M targets via a new option EMBEDDED

 ARMV8:
 	* Fixed the THUNDERX2T99 and NEOVERSEN1 DNRM2/ZNRM2 kernels for inputs with Inf
	* Added support for the DYNAMIC_LIST option
	* Added support for compilation with the NVIDIA HPC compiler
 	* Added support for compiling with the NAG Fortran compiler

====================================================================
Version 0.3.13
 12-Dec-2020

 common:
	* Added a generic bfloat16 SBGEMV kernel
	* Fixed a potentially severe memory leak after fork in OpenMP builds
	  that was introduced in 0.3.12
	* Added detection of the Fujitsu Fortran compiler
	* Added detection of the (e)gfortran compiler on OpenBSD
	* Added support for overriding the default name of the library independently
	  from symbol suffixing in the gmake builds (already supported in cmake)

RISCV:
	* Added a RISC V port optimized for C910V

POWER:
	* Added optimized POWER10 kernels for SAXPY, CAXPY, SDOT, DDOT and DGEMV_N
	* Improved DGEMM performance on POWER10
	* Improved STRSM and DTRSM performance on POWER9 and POWER10
	* Fixed segmemtation faults in DYNAMIC_ARCH builds
 	* Fixed compilation with the PGI compiler

x86:
	* Fixed compilation of kernels that require SSE2 intrinsics since 0.3.12

x86_64:
	* Added an optimized bfloat16 SBGEMV kernel for SkylakeX and Cooperlake
	* Improved the performance of SASUM and DASUM kernels through parallelization
	* Improved the performance of SROT and DROT kernels
	* Improved the performance of multithreaded xSYRK
	* Fixed OpenMP builds that use the LLVM Clang compiler together with GNU gfortran
	  (where linking of both the LLVM libomp and GNU libgomp could lead to lockups or
	  wrong results)
	* Fixed miscompilations by old gcc 4.6
	* Fixed misdetection of AVX2 capability in some Sandybridge cpus
	* Fixed lockups in builds combining DYNAMIC_ARCH with TARGET=GENERIC on OpenBSD

ARM64:
	* Fixed segmemtation faults in DYNAMIC_ARCH builds

MIPS:
	* Improved kernels for Loongson 3R3 ("3A") and 3R4 ("3B") models, including MSA
	* Fixed bugs in the MSA kernels for CGEMM, CTRMM, CGEMV and ZGEMV
	* Added handling of zero increments in the MSA kernels for SSWAP and DSWAP
	* Added DYNAMIC_ARCH support for MIPS64 (currently Loongson3R3/3R4 only)

SPARC:
	* Fixed building 32 and 64 bit SPARC kernels with the SolarisStudio compilers

====================================================================
Version 0.3.12
 24-Oct-2020

common:
	* Fixed missing BLAS/LAPACK functions (inadvertently dropped during
	  the build system restructuring)
	* Fixed argument conversion macro in LAPACKE_zgesvdq (LAPACK #458)

POWER:
	* Added optimized SCOPY/CCOPY kernels for POWER10
	* Increased and unified the default size of the GEMM BUFFER
	* Fixed building for POWER10 in DYNAMIC_ARCH mode
	* POWER10 compatibility test now checks binutils version as well
	* Cleaned up compiler warnings

x86_64:
	* corrected compiler version checks for AVX2 compatibility
	* added compiler option -mavx2 for building with flang
	* fixed direct SGEMM pathway for small matrix sizes (broken by
	  the code refactoring in 0.3.11)
	* fixed unhandled partial register clobbers in several kernels
	  for AXPY,DOT,GEMV_N and GEMV_T flagged by gcc10 tree-vectorizer

ARMV8:
	* improved Apple Vortex support to include cross-compiling

====================================================================
Version 0.3.11
 17-Oct-2020

common:
 	* API change:
	  the newly added BFLOAT16 functions were renamed to use the
	  letter "B" instead of "H" to avoid potential confusion with
	  the IEEE "half precision float" type, i.e. the 0.3.10
	  SHGEMM is now SBGEMM and the corresponding build option
	  was changed from "BUILD_HALF" to "BUILD_BFLOAT16".
	* Reduced the default BLAS3_MEM_ALLOC_THRESHOLD (used as an upper
	  limit for placing temporary arrays on the stack) to be compatible
	  with a stack size of 1mb (as imposed by the JAVA runtime library)
	* Added mixed-precision dot function SBDOT and utility functions
	  shstobf16, shdtobf16, sbf16tos and dbf16tod to convert between
	  single or double precision float arrays and bfloat16 arrays
	* Fixed prototypes of LAPACK_?ggsvp and LAPACK_?ggsvd functions
	  in lapack.h
	* Fixed underflow and rounding errors in LAPACK SLANV2 and DLANV2
	  (causing miscalculations in e.g. SHSEQR/DHSEQR, LAPACK issue #263)
	* Fixed workspace calculation in LAPACK ?GELQ (LAPACK issue #415)
	* Fixed several bugs in the LAPACK testsuite
	* Improved performance of TRMM and TRSM for certain problem sizes
	* Fixed infinite recursions and workspace miscalculations in ReLAPACK
	* CMAKE builds no longer require pkg-config for creating the .pc file
	* Makefile builds no longer misread NO_CBLAS=0 or NO_LAPACK=0 as
	  enabling these options
	* Fixed detection of gfortran when invoked through an mpi wrapper
	* Improve thread reinitialization performance with OpenMP after a fork
	* Added support for building only the subset of the library required
	  for a particular precision by specifying BUILD_SINGLE, BUILD_DOUBLE
	* Optional function name prefixes and suffixes are now correctly
	  reflected in the generated cblas.h
	* Added CMAKE build support for the LAPACK and multithreading tests

POWER:
	* Added optimized support for POWER10
	* Added support for compiling for POWER8 in 32bit mode
	* Added support for compilation with LLVM/clang
	* Added support for compilation with NVIDIA/PGI compilers
	* Fixed building on big-endian POWER8
	* Fixed miscompilation of ZDOTC by gcc10
	* Fixed alignment errors in the POWER8 SAXPY kernel
	* Improved CPU detection on AIX
	* Supported building with older compilers on POWER9

x86_64:
	* Added support for Intel Cooperlake
	* Added autodetection of AMD Renoir/Matisse/Zen3 cpus
	* Added autodetection of Intel Comet Lake cpus
	* Reimplemented ?sum, ?dot and daxpy using universal intrinsics
	* Reset the fpu state before using the fpu on Windows as a workaround
	  for a problem introduced in Windows 10 build 19041 (a.k.a. SDK 2004)
	* Fixed potentially undefined behaviour in the dot and gemv_t kernels
	* Fixed a potential segmentation fault in DYNAMIC_ARCH builds
	* Fixed building for ZEN with PGI/NVIDIA and AMD AOCC compilers

ARMV7:
	* Fixed cpu detection on BSD-like systems

ARMV8:
	* Added preliminary support for Apple Vortex cpus
	* Added support for the Cavium ThunderX3T110 cpu
	* Fixed cpu detection on BSD-like systems
	* Fixed compilation in -std=C18 mode

IBM Z:
	* Added support for compiling with the clang compiler
	* Improved GEMM performance on Z14
@
text
@d1 1
a1 1
$NetBSD$
@

