Skip to content

orient: refactor for SIMD

Rémi Denis-Courmont requested to merge Courmisch/vlc:orient into master

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

Merge request reports