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.