This is a list of notable changes to libdivide.
3.1 - not yet released
- ENHANCEMENT
- Add fuzzing support (requires clang) (#60)
3.0 - 2019-10-16
- BREAKING
libdivide.h
now requires C++11 or later
- BUG FIXES
- ENHANCEMENT
- Add support for CMake
find_package(libdivide)
- Add support for CMake
2.0 - 2019-06-22
- BREAKING
- Removed unswitch functionality (#46)
- Renamed macro
LIBDIVIDE_USE_SSE2
toLIBDIVIDE_SSE2
- Renamed
divider::recover_divisor()
todivider::recover()
- BUG FIXES
- ENHANCEMENT
- TESTING
tester.cpp
: Convert to modern C++tester.cpp
: Add more test casesbenchmark_branchfreee.cpp
: Convert to modern C++benchmark.c
: Prevent compilers from optmizing too much
- BUILD
- Automatically detect SSE2/AVX2/AVX512
- DOCS
doc/C-API.md
: Add C API referencedoc/CPP-API.md
: Add C++ API referenceREADME.md
: Add vector division and performance tips sections
1.1 - 2019-05-29
- BUG FIXES
- ENHANCEMENT
libdivide_128_div_64_to_64()
: optimize using_udiv128()
for MSVC 2019 or laterlibdivide_128_div_64_to_64()
: optimize using__uint128_t
for GCC/Clang on 64-bit CPU architectures- Add
LIBDIVIDE_VERSION
macro tolibdivide.h
- Clean up SSE2 code in
libdivide.h
- Increase runtime of test cases in
primes_benchmark.cpp
- BUILD
- Remove windows directory with legacy Visual Studio project files
- Move test programs to test directory
1.0 - 2018-01-21
- BREAKING
- ENHANCEMENT
- Add proper error handling (#38)
- Add C++ support for
/=
operator - Speedup 64-bit divisor recovery by up to 30%
- Simplify C++ templates
- Add include guards to
libdivide.h
! - Get rid of
goto
inlibdivide_128_div_64_to_64()
- Use
#if defined(MACRO)
instead of#if MACRO
- Silence compiler warnings from crash functions
- TESTING
- Tests should
exit(1)
on error, required bymake test
- Silence unused parameter warnings
- Silence GCC 7.2.0 maybe uninitialized warnings
- Silence unused return value warning
- Tests should
- BUILD
- Port build system from
make
toCMake
- Automatically detect if the CPU and compiler support SSE2
- Automatically enable C++11
- Port build system from
- DOCS
- Update build instructions in
README.md
- Update benchmark section with branchfree divider
- Add C example section
- Add C++ example section
- Add "Branchfull vs branchfree" section
- Add section about unswitching
- New
CHANGELOG.md
file
- Update build instructions in