rsimd

Make SIMD instruction sets easier to use
git clone git://git.meso-star.fr/rsimd.git
Log | Files | Refs | README | LICENSE

README.md (2911B)


      1 # RSIMD
      2 
      3 RSIMD is a C library whose purpose is to facilitate the use of SIMD
      4 instruction sets. It implements linear algebra operations for 3x3 and
      5 4x4 matrices stored in SIMD vectors as arrays of structures. Vectorized
      6 linear algebra operations on structures of arrays, for 2, 3 and 4
      7 dimensional vectors are also implemented.  Finally, it provides a
      8 vectorized version of the standard mathematical functions.
      9 
     10 ## Requirements
     11 
     12 - C compiler (C99)
     13 - POSIX make
     14 - [RSys](https://gitlab.com/vaplv/rsys/)
     15 - [Sleef](https://sleef.org/)
     16 
     17 ## Installation
     18 
     19 Edit config.mk as needed, then run:
     20 
     21     make clean install
     22 
     23 ## Release notes
     24 
     25 ### Version 0.6.1
     26 
     27 - Fix the installation path for SSE and AVX files: they were not
     28   installed in their subdirectories as they should have been.
     29 
     30 ### Version 0.6
     31 
     32 - Fix API headers. Do not include headers (even conditionaly) that
     33   depend on SIMD instructions disabled when compiling the library. The
     34   client application could activate compilation options that enabled
     35   their inclusion, while they were not installed.
     36 - Improves the construction system. Simplifies it by doing everything in
     37   one place (the Makefile). Provides additional macros to control
     38   installation subdirectories. Do not detect SIMD instructions to be
     39   activated at the time of compilation: let them be explicitly defined
     40   by the configuration file.
     41 
     42 ### Version 0.5
     43 
     44 - Replace CMake by Makefile as build system.
     45 - Provide a pkg-config file to link the library as an external
     46   dependency.
     47 
     48 ### Version 0.4
     49 
     50 - Make the sleef library an internal dependency that library users don't
     51   have to worry about: calls to the sleef library are moved from API
     52   headers to C files.
     53 - Set the C standard to C99 instead of C89: this allows the use of
     54   official (i.e. unpatched) sleef headers whose comments are written
     55   using C99-style comments. Note that since sleef is now an internal
     56   dependency, the rsimd API remains C89 compliant.
     57 - Remove the file COPYING.LESSER from the installation target: since
     58   version 0.3, the library is distributed under GPLv3+.
     59 
     60 ### Version 0.3
     61 
     62 - Add 8-way vector API for the float and int32 types.
     63 - Add the `v<4|8>i_[reduce_]<min|max>` functions.
     64 - Add the `v4i_minus` function.
     65 - Rely on the [Sleef](https://sleef.org) library to replace the
     66   hand-crafted implementation of the trigonometric functions.
     67 - Add math functions for both 4-way and 8-way vectors. Provided math
     68   functions are: copysign, floor, pow, exp[<2|10>] and log[<2|10>].
     69 
     70 ### Version 0.2.1
     71 
     72 - If supported by the compiler, use the SSE4.1 blendv instruction in the
     73   `v4f_sel` function
     74 - Turns the RSIMD library in shared library.
     75 
     76 ## License
     77 
     78 Copyright (C) 2014-2019, 2021, 2023, 2025 Vincent Forest (vaplv@free.fr)
     79 
     80 RSIMD is free software released under the GPL v3+ license: GNU GPL
     81 version 3 or later.  You are welcome to redistribute it under certain
     82 conditions; refer to the COPYING file for details.