juce-framework / JUCE

JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.
https://juce.com
Other
6.31k stars 1.67k forks source link

Add fallback SIMD implementation #1342

Open taylordotfish opened 5 months ago

taylordotfish commented 5 months ago

Currently, on platforms that don't have an implementation of SIMDNativeOps, SIMDRegister is not available.

This PR makes functionality gracefully degrade by adding a fallback implementation of SIMDNativeOps that simply calls the fallback functions that already exist in SIMDFallbackOps.

On platforms that already support SIMD, nothing changes, but other platforms will now have implementations of SIMDRegister that use the fallback functions, so software that uses SIMDRegister will automatically support more platforms without any additional effort.

All unit tests pass on x86_64, aarch64, and ppc64le.