OpenBLAS ChangeLog
====================================================================
Version 0.3.4
02-Dec-2018

common:
	* the new, experimental thread-local memory allocation had 
	  inadvertently been left enabled for gmake builds in 0.3.3
	  despite the announcement. It is now disabled by default, and
	  single-threaded builds will keep using the old allocator even
	  if the USE_TLS option is turned on.
	* OpenBLAS will now provide enough buffer space for at least 50
	  threads by default.
	* The output of openblas_get_config() now contains the version
	  number.
	* A serious thread safety bug in GEMV operation with small M and
	  large N size has been fixed.
	* The code will now automatically call blas_thread_init after a
	  fork if needed before handling a call to openblas_set_num_threads
	* Accesses to parallelized level3 functions from multiple callers
	  are now serialized to avoid thread races (unless using OpenMP).
	  This should provide better performance than the known-threadsafe
	  (but non-default) USE_SIMPLE_THREADED_LEVEL3 option.
	* When building LAPACK with gfortran, -frecursive is now (again)
	  enabled by default to ensure correct behaviour.
        * The OpenBLAS version cblas.h now supports both CBLAS_ORDER and
	  CBLAS_LAYOUT as the name of the matrix row/column order option.
	* Externally set LDFLAGS are now passed through to the final compile/link
	  steps to facilitate setting platform-specific linker flags.
	* A potential race condition during the build of LAPACK (that would 
	  usually manifest itself as a failure to build TESTING/MATGEN) has been 
	  fixed.
	* xHEMV has been changed to stay single-threaded for small input sizes
	  where the overhead of multithreading exceeds any possible gains
	* CSWAP and ZSWAP have been limited to a single thread except on ARMV8 or
	  ThunderX hardware with sizable input.
	* Linker flags for the PGI compiler have been updated
	* Behaviour of AXPY with zero increments is now handled in the C interface,
	  correcting the result on at least Intel Atom.
	* The result matrix from calling SGELSS with an all-zero input matrix is 
	  now zeroed completely.
	  
x86_64:
	* Autodetection of AMD Ryzen2 has been fixed (again).
        * CMAKE builds now support labeling of an INTERFACE64=1 build of
	  the library with the _64 suffix.
	* AVX512 version of DGEMM has been added and the AVX512 SGEMM kernel
	  has been sped up by rewriting with C intrinsics
	* Fixed compilation on RHEL5/CENTOS5 (issue with typename __WAIT_STATUS)
	
POWER:
	* added support for building on AIX (with gcc and GNU tools from AIX Toolbox).
	* CPU type detection has been implemented for AIX.
	* CPU type detection has been fixed for NETBSD.
	
MIPS64:
	* AXPY on LOONGSON3A has been corrected to pass "zero increment" utest.
	* DSDOT on LOONGSON3A has been fixed.
	* the SGEMM microkernel has been hardened against potential data loss.
	
ARMV8:
	* DYNAMic_ARCH support is now available for 64bit ARM
	* cross-compiling for ARMV8 under iOS now works.
	* cpu-specific code has been rearranged to make better use of both
	  hardware commonalities and model-specific compiler optimizations.
	* XGENE1 has been removed as a TARGET, superseded by the improved generic
	  ARMV8 support.
	
ARMV7:
	* Older assembly mnemonics have been converted to UAL form to allow
	  building with clang 7.0
	* Cross compiling LAPACKE for Android has been fixed again (broken by
	  update to LAPACK 3.7.0 some while ago).  
	  
====================================================================
Version 0.3.3
31-Aug-2018

common:
	* thread memory allocation has been switched back to the method
	  used before version 0.3.1 due to unexpected problems caused by
	  the new code under some circumstances. A new compile-time option
	  USE_TLS has been added to enable the new code, and it is hoped
	  that this can become the default again in the next version.
	* LAPAck PR272 has been integrated, which fixes spurious errors
	  in DSYEVR and related functions caused by missing conversion 
	  from ILAENV to ILAENV_2STAGE in several _2stage routines.
	* the cmake-generated OpenBLASConfig.cmake now uses correct case
	  for the name of the library
	* added support for Haiku OS  

x86_64:
	* added AVX512 implementations of SDOT, DDOT, SAXPY, DAXPY,
	  DSCAL, DGEMVN and DSYMVL 
	* added a workaround for a cygwin issue that prevented compilation
	  of AVX512 code
	  
IBM Z:
	* added autodetection of Z14
	* fixed TRMM errors in the generic target
	
====================================================================
Version 0.3.2
30-Jul-2018

common:
	* fixes for regressions caused by the rewrite of the thread
	  initialization code in 0.3.1

POWER:
	* fixed cpu autodetection for the BSDs

MIPS64:
	* fixed utest errors in AXPY, DSDOT, ROT and SWAP

x86_64:
	* added autodetection of AMD Ryzen 2
	* fixed build with older versions of MSVC

====================================================================
Version 0.3.1
01-Jul-2018

common:
	* rewritten thread initialization code with significantly reduced overhead
	* added CBLAS interfaces to the IxAMIN BLAS extension functions
	* fixed the lapack-test target
	* CMAKE builds now create an OpenBLASConfig.cmake file
	* ZAXPY now uses a single thread for small input sizes
	* the LAPACK code was updated from Reference-LAPACK/lapack#253
          (fixing LAPACKE interfaces to Aasen's functions)

POWER:
	* corrected CROT and ZROT behaviour with zero INC_X

ARMV7:
	* corrected xDOT behaviour with zero INC_X or INC_Y

x86_64:
	* retired some older targets of DYNAMIC_ARCH builds to a new option DYNAMIC_OLDER,
	  this affects PENRYN,DUNNINGTON,OPTERON,OPTERON_SSE3,BOBCAT,ATOM and NANO
	  (which will still be supported via the slower PRESCOTT kernels when this option is not set)
	* added an option DYNAMIC_LIST that (used in conjunction with DYNAMIC_ARCH) allows to 
	  specify the list of x86_64 targets to include. Any target not on the list will be supported 
	  by the Sandybridge or Nehalem kernels if available, or by Prescott.
	* improved SWITCH_RATIO on Haswell for increased GEMM throughput
	* added initial support for Intel Skylake X, including an AVX512 SGEMM kernel
	* added autodetection of Intel Cannon Lake series as Skylake X
	* added a default L2 cache size for hypervisors that return zero here (Chromebook)
	* fixed a name clash with recent Windows10 headers that broke the build with (at least)
	  recent mingw from MSYS2
	* fixed a link error in mixed clang/gfortran builds with OpenMP
	* updated the OSX deployment target to 10.8
	* switched on parallel make for builds on MS Windows by default

x86:
	* fixed SSWAP and DSWAP behaviour with zero INC_X and INC_Y

====================================================================
Version 0.3.0
23-May-2108

common:
	* fixed some more thread race and locking bugs
	* added preliminary support for calling an OpenMP build of the library from multiple threads
	* removed performance impact of thread locks added in 0.2.20 on OpenMP code
	* general code cleanup 
	* optimized DSDOT implementation
	* improved thread distribution for GEMM
	* corrected IMATCOPY/OMATCOPY implementation
	* fixed out-of-bounds accesses in the multithreaded xBMV/xPMV and SYMV implementations
	* cmake build improvements
	* pkgconfig file now contains build options
	* openblas_get_config() now reports USE_OPENMP and NUM_THREADS settings used for the build
	* corrections and improvements for systems with more than 64 cpus
	* LAPACK code updated to 3.8.0 including later fixes
	* added ReLAPACK, a recursive implementation of several LAPACK functions
	* Rewrote ROTMG to handle cases that the netlib code failed to address
	* Disabled (broken) multithreading code for xTRMV
	* corrected prototypes of complex CBLAS functions to make our cblas.h match the generally accepted standard
	* shared memory access failures on startup are now handled more gracefully
	* restored utests from earlier releases (and made them pass on all affected systems)

SPARC:
	* several fixes for cpu autodetection

POWER:
	* corrected vector register overwriting in several Power8 kernels
	* optimized additional BLAS functions

ARM:
	* added support for CortexA53 and A72 
	* added autodetection for ThunderX2T99
	* made most optimized kernels the default for generic ARMv8 targets 

x86_64:
	* parallelized DDOT kernel for Haswell
	* changed alignment directives in assembly kernels to boost performance on OSX
	* fixed register handling in the GEMV microkernels (bug exposed by gcc7)
	* added support for building on OpenBSD and Dragonfly 
	* updated compiler options to work with Intel release 2018
	* support fully optimized build with clang/flang on Microsoft Windows
	* fixed building on AIX

IBM Z:
	* added optimized BLAS 1/2 functions

MIPS:
	* fixed cpu autodetection helper code
	* added mips32 1004K cpu (Mediatek MT7621 and similar SoC)
	* added mips64 I6500 cpu

====================================================================
Version 0.2.20
24-Jul-2017

common:
        * Improved CMake support
        * Fixed several thread race and locking bugs
        * Fixed default LAPACK optimization level
        * Updated LAPACK to 3.7.0
        * Added ReLAPACK (https://github.com/HPAC/ReLAPACK, make BUILD_RELAPACK=1)

POWER:
        * Optimizations for Power9
        * Fixed several Power8 assembly bugs

ARM:
        * New optimized Vulcan and ThunderX2T99 targets
        * Support for ARMV7 SOFT_FP ABI (make ARM_SOFTFP_ABI=1)
        * Detect all cpu cores including offline ones
        * Fix compilation with CLANG
        * Support building a shared library for Android

MIPS:
        * Fixed several threading issues
        * Fix compilation with CLANG

x86_64:
        * Detect Intel Bay Trail and Apollo Lake
        * Detect Intel Sky Lake and Kaby Lake
        * Detect Intel Knights Landing
        * Detect AMD A8, A10, A12 and Ryzen
        * Support 64bit builds with Visual Studio
        * Fix building with Intel and PGI compilers
        * Fix building with MINGW and TDM-GCC
        * Fix cmake builds for Haswell and related cpus
        * Fix building for Sandybridge with CLANG 3.9
	* Add support for the FLANG compiler

IBM Z:
        * New target z13 with BLAS3 optimizations

====================================================================
Version 0.2.19
1-Sep-2016
common:
	* Improved cross compiling.
	* Fix the bug on musl libc.

POWER:
	* Optimize BLAS on Power8
	* Fixed Julia+OpenBLAS bugs on Power8

MIPS:
	* Optimize BLAS on MIPS P5600 and I6400 (Thanks, Shivraj Patil, Kaustubh Raste)

ARM:
	* Improved on ARM Cortex-A57. (Thanks, Ashwin Sekhar T K)


====================================================================
Version 0.2.18
12-Apr-2016
common:
	* If you set MAKE_NB_JOBS flag less or equal than zero,
	  make will be without -j.

x86/x86_64:
	* Support building Visual Studio static library. (#813, Thanks, theoractice)
	* Fix bugs to pass buidbot CI tests (http://build.openblas.net)

ARM:
	* Provide DGEMM 8x4 kernel for Cortex-A57 (Thanks, Ashwin Sekhar T K)

POWER:
	* Optimize S and C BLAS3 on Power8
	* Optimize BLAS2/1 on Power8

====================================================================
Version 0.2.17
20-Mar-2016
common:
	* Enable BUILD_LAPACK_DEPRECATED=1 by default.

====================================================================
Version 0.2.16
15-Mar-2016
common:
	* Avoid potential getenv segfault. (#716)
	* Import LAPACK svn bugfix #142-#147,#150-#155

x86/x86_64:
	* Optimize c/zgemv for AMD Bulldozer, Piledriver, Steamroller
	* Fix bug with scipy linalg test.

ARM:
	* Improve DGEMM for ARM Cortex-A57. (Thanks, Ashwin Sekhar T K)

POWER:
	* Optimize D and Z BLAS3 functions for Power8.

====================================================================
Version 0.2.16.rc1
23-Feb-2016
common:
	* Upgrade LAPACK to 3.6.0 version.
	  Add BUILD_LAPACK_DEPRECATED option in Makefile.rule to build
	  LAPACK deprecated functions.
	* Add MAKE_NB_JOBS option in Makefile.
	  Force number of make jobs.This is particularly
	  useful when using distcc. (#735. Thanks, Jerome Robert.)
	* Redesign unit test. Run unit/regression test at every build (Travis-CI and Appveyor).
	* Disable multi-threading for small size swap and ger. (#744. Thanks, Jerome Robert)
	* Improve small zger, zgemv, ztrmv using stack alloction (#727. Thanks, Jerome Robert)
	* Let openblas_get_num_threads return the number of active threads. 
	  (#760. Thanks, Jerome Robert)
	* Support illumos(OmniOS). (#749. Thanks, Lauri Tirkkonen)
	* Fix LAPACK Dormbr, Dormlq bug. (#711, #713. Thanks, Brendan Tracey)
	* Update scipy benchmark script. (#745. Thanks, John Kirkham)

x86/x86_64:
	* Optimize trsm kernels for AMD Bulldozer, Piledriver, Steamroller.
	* Detect Intel Avoton.
	* Detect AMD Trinity, Richland, E2-3200.
	* Fix gemv performance bug on Mac OSX Intel Haswell.
	* Fix some bugs with CMake and Visual Studio

ARM:
	* Support and optimize Cortex-A57 AArch64.
	  (#686. Thanks, Ashwin Sekhar TK)
	* Fix Android build on ARMV7 (#778. Thanks, Paul Mustiere)
	* Update ARMV6 kernels.

POWER:
	* Fix detection of POWER architecture
	  (#684. Thanks, Sebastien Villemot)

====================================================================
Version 0.2.15
27-Oct-2015
common:
	* Support cmake on x86/x86-64. Natively compiling on MS Visual Studio.
	  (experimental. Thank Hank Anderson for the initial cmake porting work.)
	  
	  On Linux and Mac OSX, OpenBLAS cmake supports assembly kernels.
	  e.g. cmake .
	       make
	       make test (Optional)

	  On Windows MS Visual Studio, OpenBLAS cmake only support C kernels.
	  (OpenBLAS uses AT&T style assembly, which is not supported by MSVC.)
	  e.g. cmake -G "Visual Studio 12 Win64" .
	       Open OpenBLAS.sln and build.
	  
	* Enable MAX_STACK_ALLOC flags by default.
	  Improve ger and gemv for small matrices.
	* Improve gemv parallel with small m and large n case.
	* Improve ?imatcopy when lda==ldb (#633. Thanks, Martin Koehler)
	* Add vecLib benchmarks (#565. Thanks, Andreas Noack.)
	* Fix LAPACK lantr for row major matrices (#634. Thanks, Dan Kortschak)
	* Fix LAPACKE lansy (#640. Thanks, Dan Kortschak)
	* Import bug fixes for LAPACKE s/dormlq, c/zunmlq 
	* Raise the signal when pthread_create fails (#668. Thanks, James K. Lowden)
	* Remove g77 from compiler list.
	* Enable AppVeyor Windows CI.

x86/x86-64:
	* Support pure C generic kernels for x86/x86-64.
	* Support Intel Boardwell and Skylake by Haswell kernels.
	* Support AMD Excavator by Steamroller kernels.
	* Optimize s/d/c/zdot for Intel SandyBridge and Haswell.
	* Optimize s/d/c/zdot for AMD Piledriver and Steamroller.
	* Optimize s/d/c/zapxy for Intel SandyBridge and Haswell.
	* Optimize s/d/c/zapxy for AMD Piledriver and Steamroller.
	* Optimize d/c/zscal for Intel Haswell, dscal for Intel SandyBridge.
	* Optimize d/c/zscal for AMD Bulldozer, Piledriver and Steamroller.
	* Optimize s/dger for Intel SandyBridge.
	* Optimize s/dsymv for Intel SandyBridge.
	* Optimize ssymv for Intel Haswell.
	* Optimize dgemv for Intel Nehalem and Haswell.
	* Optimize dtrmm for Intel Haswell.

ARM:
	* Support Android NDK armeabi-v7a-hard ABI (-mfloat-abi=hard)
	  e.g. make HOSTCC=gcc CC=arm-linux-androideabi-gcc NO_LAPACK=1 TARGET=ARMV7
	* Fix lock, rpcc bugs (#616, #617. Thanks, Grazvydas Ignotas)
POWER:
	* Support ppc64le platform (ELF ABI v2. #612. Thanks, Matthew Brandyberry.)
	* Support POWER7/8 by POWER6 kernels. (#612. Thanks, Fábio Perez.)

====================================================================
Version 0.2.14
24-Mar-2015
common:
	* Improve OpenBLASConfig.cmake. (#474, #475. Thanks, xantares.)
	* Improve ger and gemv for small matrices by stack allocation.
	  e.g. make -DMAX_STACK_ALLOC=2048 (#482. Thanks, Jerome Robert.)
	* Introduce openblas_get_num_threads and openblas_get_num_procs.
	  (#497. Thanks, Erik Schnetter.)
	* Add ATLAS-style ?geadd function. (#509. Thanks, Martin Köhler.)
	* Fix c/zsyr bug with negative incx. (#492.)
	* Fix race condition during shutdown causing a crash in
	  gotoblas_set_affinity(). (#508. Thanks, Ton van den Heuvel.)

x86/x86-64:
	* Support AMD Streamroller.

ARM:
	* Add Cortex-A9 and Cortex-A15 targets.

====================================================================
Version 0.2.13
3-Dec-2014
common:
	* Add SYMBOLPREFIX and SYMBOLSUFFIX makefile options
	  for adding a prefix or suffix to all exported symbol names
	  in the shared library.(#459, Thanks Tony Kelman)
	* Provide OpenBLASConfig.cmake at installation.
	* Fix Fortran compiler detection on FreeBSD.
	  (#470, Thanks Mike Nolta)


x86/x86-64:
	* Add generic kernel files for x86-64. make TARGET=GENERIC
	* Fix a bug of sgemm kernel on Intel Sandy Bridge.
	* Fix c_check bug on some amd64 systems. (#471, Thanks Mike Nolta)

ARM:
	* Support APM's X-Gene 1 AArch64 processors.
	  Optimize trmm and sgemm. (#465, Thanks Dave Nuechterlein)

====================================================================
Version 0.2.12
13-Oct-2014
common:
	* Added CBLAS interface for ?omatcopy and ?imatcopy.
	* Enable ?gemm3m functions.
	* Added benchmark for ?gemm3m.
	* Optimized multithreading lower limits.
	* Disabled SYMM3M and HEMM3M functions 
	  because of segment violations.

x86/x86-64:
	* Improved axpy and symv performance on AMD Bulldozer.
	* Improved gemv performance on modern Intel and AMD CPUs.

====================================================================
Version 0.2.11
18-Aug-2014
common:
	* Added some benchmark codes.
	* Fix link error on Linux/musl.(Thanks Isaac Dunham)

x86/x86-64:
	* Improved s/c/zgemm performance for Intel Haswell.
	* Improved s/d/c/zgemv performance.
	* Support the big numa machine.(EXPERIMENT)

ARM:
	* Fix detection when cpuinfo uses "Processor". (Thanks Isaiah)

====================================================================
Version 0.2.10
16-Jul-2014
common:
	* Added BLAS extensions as following.
	  s/d/c/zaxpby, s/d/c/zimatcopy, s/d/c/zomatcopy.
	* Added OPENBLAS_CORETYPE environment for dynamic_arch. (a86d34)
	* Added NO_AVX2 flag for old binutils. (#401)
	* Support outputing the CPU corename on runtime.(#407)
	* Patched LAPACK to fix bug 114, 117, 118. 
	  (http://www.netlib.org/lapack/bug_list.html)
	* Disabled ?gemm3m for a work-around fix. (#400)
x86/x86-64:
	* Fixed lots of bugs for optimized kernels on sandybridge,Haswell, 
	  bulldozer, and piledriver.
	  https://github.com/xianyi/OpenBLAS/wiki/Fixed-optimized-kernels-To-do-List

ARM:
	* Improved LAPACK testing.

====================================================================
Version 0.2.9
10-Jun-2014
common:
	* Improved the result for LAPACK testing. (#372)
	* Installed DLL to prefix/bin instead of prefix/lib. (#366)
	* Build import library on Windows.(#374)
x86/x86-64:
	* To improve LAPACK testing, we fallback some kernels. (#372)
	https://github.com/xianyi/OpenBLAS/wiki/Fixed-optimized-kernels-To-do-List

====================================================================
Version 0.2.9.rc2
06-Mar-2014
common:
	* Added OPENBLAS_VERBOSE environment variable.(#338)
	* Make OpenBLAS thread-pool resilient to fork via pthread_atfork.
	  (#294, Thank Olivier Grisel)
	* Rewrote rotmg
	* Fixed sdsdot bug.
x86/x86-64:
	* Detect Intel Haswell for new Macbook.

====================================================================
Version 0.2.9.rc1
13-Jan-2013
common:
	* Update LAPACK to 3.5.0 version
	* Fixed compatiable issues with Clang and Pathscale compilers.

x86/x86-64:
	* Optimization on Intel Haswell.
	* Enable optimization kernels on AMD Bulldozer and Piledriver.

ARM:
	* Support ARMv6 and ARMv7 ISA.
	* Optimization on ARM Cortex-A9.

====================================================================
Version 0.2.8
01-Aug-2013
common:
	* Support Open64 5.0. (#266)
	* Add executable stack markings. (#262, Thank Sébastien Fabbro)
	* Respect user's LDFLAGS (Thank Sébastien Fabbro)

x86/x86-64:
	* Rollback bulldozer and piledriver kernels to barcelona kernels (#263)
	  We will fix the compuational error bug in bulldozer and piledriver kernels.

====================================================================
Version 0.2.7
20-Jul-2013
common:
	* Support LSB (Linux Standard Base) 4.1.
          e.g. make CC=lsbcc
	* Include LAPACK 3.4.2 source codes to the repo.
          Avoid downloading at compile time.
	* Add NO_PARALLEL_MAKE flag to disable parallel make.
        * Create openblas_get_parallel to retrieve information which
          parallelization model is used by OpenBLAS. (Thank grisuthedragon)
	* Detect LLVM/Clang compiler. The default compiler is Clang on Mac OS X.
        * Change LIBSUFFIX from .lib to .a on windows.
	* A work-around for dtrti_U single thread bug. Replace it with LAPACK codes. (#191)

x86/x86-64:
	* Optimize c/zgemm, trsm, dgemv_n, ddot, daxpy, dcopy on
          AMD Bulldozer. (Thank Werner Saar)
        * Add Intel Haswell support (using Sandybridge optimizations).
          (Thank Dan Luu)
	* Add AMD Piledriver support (using Bulldozer optimizations).
        * Fix the computational error in zgemm avx kernel on
          Sandybridge. (#237)
        * Fix the overflow bug in gemv.
	* Fix the overflow bug in multi-threaded BLAS3, getrf when NUM_THREADS
          is very large.(#214, #221, #246).
MIPS64:
        * Support loongcc (Open64 based) compiler for ICT Loongson 3A/B.

Power:
        * Support Power7 by old Power6 kernels. (#220)

====================================================================
Version 0.2.6
2-Mar-2013
common:
	* Improved OpenMP performance slightly. (d744c9)
	* Improved cblas.h compatibility with Intel MKL.(#185)
	* Fixed the overflowing bug in single thread cholesky factorization.
	* Fixed the overflowing buffer bug of multithreading hbmv and sbmv.(#174)

x86/x86-64:
	* Added AMD Bulldozer x86-64 S/DGEMM AVX kernels. (Thank Werner Saar)
	  We will tune the performance in future.
	* Auto-detect Intel Xeon E7540.
	* Fixed the overflowing buffer bug of gemv. (#173)
	* Fixed the bug of s/cdot about invalid reading NAN on x86_64. (#189)

MIPS64:

====================================================================
Version 0.2.5
26-Nov-2012
common:
	* Added NO_SHARED flag to disable generating the shared library.
	* Compile LAPACKE with ILP64 modle when INTERFACE64=1 (#158)
	* Export LAPACK 3.4.2 symbols in shared library. (#147)
	* Only detect the number of physical CPU cores on Mac OSX. (#157)
	* Fixed NetBSD build. (#155)
	* Fixed compilation with TARGET=GENERIC. (#160)
x86/x86-64:
	* Restore the original CPU affinity when calling
	  openblas_set_num_threads(1) (#153)
	* Fixed a SEGFAULT bug in dgemv_t when m is very large.(#154)
MIPS64:

====================================================================
Version 0.2.4
8-Oct-2012
common:
	* Upgraded LAPACK to 3.4.2 version. (#145)
	* Provided support for passing CFLAGS, FFLAGS, PFLAGS,
	  FPFLAGS to make. (#137)
	* f77blas.h:compatibility for compilers without C99 complex
	  number support. (#141)
x86/x86-64:
	* Added NO_AVX flag. Check OS supporting AVX on runtime. (#139)
	* Fixed zdot incompatibility ABI issue with GCC 4.7 on
	  Windows 32-bit. (#140)
MIPS64:
	* Fixed the generation of shared library bug.
	* Fixed the detection bug on the Loongson 3A server.
====================================================================
Version 0.2.3
20-Aug-2012
common:
	* Fixed LAPACK unstable bug about ?laswp. (#130)
	* Fixed the shared library bug about unloading the library on
	  Linux (#132).
	* Fixed the compilation failure on BlueGene/P (TARGET=PPC440FP2)
	  Please use gcc and IBM xlf. (#134)
x86/x86-64:
	* Supported goto_set_num_threads and openblas_set_num_threads
	  APIs in Windows. They can set the number of threads on runtime.

====================================================================
Version 0.2.2
6-July-2012
common:
	* Fixed exporting DLL functions bug on Windows/MingW
	* Support GNU Hurd (Thank Sylvestre Ledru)
	* Support kfreebsd kernel (Thank Sylvestre Ledru)
x86/x86-64:
	* Support Intel Sandy Bridge 22nm desktop/mobile CPU
SPARC:
	* Improve the detection of SPARC (Thank Sylvestre Ledru)

====================================================================
Version 0.2.1
30-Jun-2012
common:
x86/x86-64:
	* Fixed the SEGFAULT bug about hyper-theading
	* Support AMD Bulldozer by using GotoBLAS2 AMD Barcelona codes

====================================================================
Version 0.2.0
26-Jun-2012
common:
	* Removed the limitation (64) of numbers of CPU cores.
	  Now, it supports 256 cores at max.
	* Supported clang compiler.
	* Fixed some build bugs on FreeBSD
x86/x86-64:
	* Optimized Level-3 BLAS on Intel Sandy Bridge x86-64 by AVX instructions.
	  Please use gcc >= 4.6 or clang >=3.1.
	* Support AMD Bobcat by using GotoBLAS2 AMD Barcelona codes.

====================================================================
Version 0.1.1
29-Apr-2012
common:
	* Upgraded LAPACK to 3.4.1 version. (Thank Zaheer Chothia)
	* Supported LAPACKE, a C interface to LAPACKE. (Thank Zaheer Chothia)
	* Fixed the build bug (MD5 and download) on Mac OSX.
	* Auto download CUnit 2.1.2-2 from SF.net with UTEST_CHECK=1.
	* Fxied the compatibility issue for compilers without C99 complex number
	  (e.g. Visual Studio)
x86/x86_64:
	* Auto-detect Intel Sandy Bridge Core i7-3xxx & Xeon E7 Westmere-EX.
	* Test alpha=Nan in dscale.
	* Fixed a SEGFAULT bug in samax on x86 windows.

====================================================================
Version 0.1.0
23-Mar-2012
common:
	* Set soname of shared library on Linux.
	* Added LIBNAMESUFFIX flag in Makefile.rule. The user can use
	  this flag to control the library name, e.g. libopenblas.a,
	  libopenblas_ifort.a or libopenblas_omp.a.
	* Added GEMM_MULTITHREAD_THRESHOLD flag in Makefile.rule.
	  The lib use single thread in GEMM function with small matrices.
x86/x86_64:
	* Used GEMV SSE/SSE2 kernels on x86 32-bit.
	* Exported CBLAS functions in Windows DLL.
MIPS64:
	* Completed Level-3 BLAS optimization on Loongson 3A CPU.
	* Improved GEMV performance on Loongson 3A CPU.
	* Improved Level-3 BLAS performance on Loongson 3B CPU. (EXPERIMENT)

====================================================================
Version 0.1 alpha2.5
19-Feb-2012
common:
	* Fixed missing "#include <sched.h>" bug on Mac OS X.
	  Thank Mike Nolta for the patch.
	* Upgraded LAPACK to 3.4.0 version
	* Fixed a bug on Mac OS X. Don't require SystemStubs on OS X.
	  SystemStubs does not exist on Lion. Thank Stefan Karpinski.
	* Improved README with using OpenMP. Check the internal threads
	  count less than or equal to omp_get_max_threads()
x86/x86_64:
	* Auto-detect Intel Core i6/i7 (Sandy Bridge) CPU with Nehalem assembly kernels
	* Fixed some bugs on MingW 64-bit including zgemv, cdot, zdot.

====================================================================
Version 0.1 alpha2.4
18-Sep-2011
common:
	* Fixed a bug about installation. The header file "fblas77.h"
	  works fine now.
	* Fixed #61 a building bug about setting TARGET and DYNAMIC_ARCH.
	* Try to handle absolute path of shared library in OSX. (#57)
	  Thank Dr Kane O'Donnell.
	* Changed the installation folder layout to $(PREFIX)/include and
	  $(PREFIX)/lib

x86/x86_64:
	* Fixed #58 zdot/xdot SEGFAULT bug with GCC-4.6 on x86. According
	  to i386 calling convention, The callee should remove the first
	  hidden parameter.Thank Mr. John for this patch.

====================================================================
Version 0.1 alpha2.3
5-Sep-2011

x86/x86_64:
	*  Added DTB_ENTRIES into dynamic arch setting parameters. Now,
	   it can read DTB_ENTRIES on runtime. (Refs issue #55 on github)

====================================================================
Version 0.1 alpha2.2
14-Jul-2011

common:
	* Fixed a building bug when DYNAMIC_ARCH=1 & INTERFACE64=1.
	  (Refs issue #44 on github)

====================================================================
Version 0.1 alpha2.1
28-Jun-2011

common:
	* Stop the build and output the error message when detecting
	  fortran compiler failed. (Refs issue #42 on github)

====================================================================
Version 0.1 alpha2
23-Jun-2011

common:
	* Fixed blasint undefined bug in <cblas.h> file. Other software
	  could include this header successfully(Refs issue #13 on github)
	* Fixed the SEGFAULT bug on 64 cores. On SMP server, the number
	  of CPUs or cores should be less than or equal to 64.(Refs issue #14
	  on github)
	* Support "void goto_set_num_threads(int num_threads)" and "void
	  openblas_set_num_threads(int num_threads)" when USE_OPENMP=1
	* Added extern "C" to support C++. Thank Tasio for the patch(Refs
	  issue #21 on github)
	* Provided an error message when the arch is not supported.(Refs
	  issue #19 on github)
	* Fixed issue #23. Fixed a bug of f_check script about generating link flags.
	* Added openblas_set_num_threads for Fortran.
	* Fixed #25 a wrong result of rotmg.
	* Fixed a bug about detecting underscore prefix in c_check.
	* Print the wall time (cycles) with enabling FUNCTION_PROFILE
	* Fixed #35 a build bug with NO_LAPACK=1 & DYNAMIC_ARCH=1
	* Added install target. You can use "make install". (Refs #20)


x86/x86_64:
	* Fixed #28 a wrong result of dsdot on x86_64.
	* Fixed #32 a SEGFAULT bug of zdotc with gcc-4.6.
	* Fixed #33 ztrmm bug on Nehalem.
	* Work-around #27 the low performance axpy issue with small imput size & multithreads.

MIPS64:
	* Fixed #28 a wrong result of dsdot on Loongson3A/MIPS64.
	* Optimized single/double precision BLAS Level3 on Loongson3A/MIPS64. (Refs #2)
	* Optimized single/double precision axpy function on Loongson3A/MIPS64. (Refs #3)

====================================================================
Version 0.1 alpha1
20-Mar-2011

common:
	* Support "make  NO_LAPACK=1" to build the library without
	  LAPACK functions.
	* Fixed randomly SEGFAULT when nodemask==NULL with above Linux 2.6.34.
	  Thank Mr.Ei-ji Nakama providing this patch. (Refs issue #12 on github)
	* Added DEBUG=1 rule in Makefile.rule to build debug version.
	* Disable compiling quad precision in reference BLAS library(netlib BLAS).
	* Added unit testcases in utest/ subdir. Used  CUnit framework.
	* Supported OPENBLAS_* & GOTO_* environment variables (Pleas see README)
	* Imported GotoBLAS2 1.13 BSD version

x86/x86_64:
	* On x86 32bits, fixed a bug in zdot_sse2.S line 191. This would casue
	  zdotu & zdotc failures. Instead, work-around it. (Refs issue #8 #9 on github)
	* Modified ?axpy functions to return same netlib BLAS results
	  when incx==0 or incy==0 (Refs issue #7 on github)
	* Modified ?swap functions to return same netlib BLAS results
	  when incx==0 or incy==0 (Refs issue #6 on github)
	* Modified ?rot functions to return same netlib BLAS results
	  when incx==0 or incy==0 (Refs issue #4 on github)
	* Detect Intel Westmere,Intel Clarkdale and Intel Arrandale
	  to use Nehalem codes.
	* Fixed a typo bug about compiling dynamic ARCH library.
MIPS64:
	* Improve daxpy performance on ICT Loongson 3A.
	* Supported ICT Loongson 3A CPU (Refs issue #1 on github)
====================================================================
