orient: refactor for SIMD
There are several different approaches to implement transforms in SIMD:
- reverse (h-flip) and transpose instructions, e.g., with ARM NEON,
- register-stride load/store, e.g., with ARM SME or RISC-V V,
- table lookups.
In any case, SIMD is only needed for h-flip and transposition. The other ones can be reconstituted:
- V-flip can be achieved with
memcpy
. - 180 degrees rotation is h-flip with one negated stride.
- 90 or 270 degrees rotations is transposition with one negated stride.
- Anti-transposition is transposition with both strides negated.
This MR cuts the number of plane transform callbacks down from 21 to just 6 to simplify future SIMD work. It then also adds two callbacks for 64-bit transforms.
This is a dependency of !1430 (merged)
Edited by Rémi Denis-Courmont