[FEATURE] Port Krita to xsimd
This commit replaces our Vc backend with xsimd, QuantStack's SIMD offering backing the xtensor project.
This requires the following:
- wholesale replacement of Vc with xsimd alternatives
- implementation of dispatching against the xsimd::generic architecture (i.e. Vc::ScalarImpl)
- implementation of rudimentary gather-scatter and integer rounding ops
This brings Arm support to our backend for Free(tm).
TODO
-
Correct implementation of target architecture detection - Vc's will not work on Android or on a cross-compiled architecture
-
Simplification of the xsimd Vc-ported CMake macros -
A way to make the benchmarks use the highest available dispatchable instruction set
Test Plan
Build Krita with xsimd. Check that you can paint without glitches.
Formalities Checklist
-
I confirmed this builds. -
I confirmed Krita ran and the relevant functions work. -
I tested the relevant unit tests and can confirm they are not broken. (If not possible, don't hesitate to ask for help!) -
I made sure my commits build individually and have good descriptions as per KDE guidelines. -
I made sure my code conforms to the standards set in the HACKING file. -
I can confirm the code is licensed and attributed appropriately, and that unattributed code is mine, as per KDE Licensing Policy.
Edited by Amy spark