Dawoodoz / DFPSR

Fast realtime softare rendering library for C++14 using SSE/AVX/NEON. 2D, 3D and isometric rendering with minimal system dependencies.
https://dawoodoz.com/dfpsr.html
78 stars 6 forks source link

Introducing 256-bit SIMD with AVX and AVX2 #81

Closed Dawoodoz closed 1 year ago

Dawoodoz commented 1 year ago

The new X and F vector lengths allow programming for an arbitrary SIMD vector length. F is the longest available SIMD length for float SIMD, expanding to 256 bits when building with AVX instructions. X is the longest SIMD length available for all SIMD types, expanding to 256 bits with AVX2. See the new documentation for more information.

Due to the thousands of lines of new code and changes to 50 files, new regression tests were written and the code was tested on a wide variety of processor architectures and operating systems. This pull request is however too big, so I will come back with more pull requests fixing smaller things in isolation.

The SIMD Extra feature was disabled for ARM NEON, because it was broken due to never being used and should soon be replaced with better zip instructions that have scalar emulation in simd.h.