My vector class library, asmlib library, random number generator library,
objconv tool, and test programs have now been updated as explained below.
Vector class library
The vector class library is a collection of C++ classes, functions and
operators that makes it easier to use the the vector instructions of modern CPUs
without using assembly language. Main improvements in latest version:
- Support for Clang compiler
- Clear distinction between boolean vectors and integer vectors for the sake
of compatibility with future AVX512 instruction set
- Added function if_add
- Minor bug fixes
- Workarounds for various problems in specific compilers
Link to vector class library.
Asmlib library
This is a library of optimized subroutines coded in assembly language.
Supports many different compilers and operating systems. This library contains
faster versions of common C/C++ memory and string functions, fast functions for
string search and string parsing, fast integer division and integer vector
division, random number generators, and several other useful functions not found
elsewhere. Main improvements in latest version:
- New function: memcmp
- memcpy, memmove and memset functions updated with optimizations for newest
processors, including Intel Haswell and AMD Piledriver.
- Various random number generators included. These were previously in a
separate library.
Link to asmlib library.
Random number generator library
This is a collection of pseudo random number generators for demanding
scientific applications including various continuous and discrete distributions.
Includes
C++ class libraries and binary library files. A non-deterministic random number generator function is
added for use with
microprocessors that have a built-in physical random number generator. The binary library files have now
been integrated with the Asmlib library in order to explore the synergy between
the two libraries and make maintenance easier.
Link to random number generator library.
Objconv tool
This utility can be used for converting object files between different object
file formats for all 32-bit and 64-bit x86 platforms. Can modify symbol names in
object files. Can build, modify and convert function libraries across platforms.
Can dump object files and executable files. Also includes a very good
disassembler supporting the latest instruction sets. Main improvements in latest
version:
- Faster handling of large libraries
- Better handling of library members with long names
- Can change prefixes and suffixes of function names in object files and
library files
- Disassembler supports future instruction sets, including AVX-512
- Various bug fixes
Link to objconv tool.
Test programs
This is a collection of test programs that I have used for my research. Can
measure clock cycles and performance monitor counters such as cache misses,
branch mispredictions, resource stalls etc. for small pieces of code. This has
been updated to support the latest microprocessors, including Intel Haswell and
AMD Piledriver. A lot of test scripts have been added for automated tests of
instruction latencies and throughputs, instruction fetch and decode rates, data
cache, microop cache, store forwarding, and many other details.
Link to test programs. |