NEON is a name that should never be used again, because it is extremely ambiguous. Whenever someone speaks about Arm NEON it is impossible to guess what instruction set is meant.
The 32-bit Arm architectures have used several kinds of floating-point units, with very distinct capabilities, so when compiling a program for 32-bit Arm CPUs you must always provide a specific FPU selecting option to the C/C++ compiler, the one correct for the target CPU, otherwise the performance will be suboptimal. (an example of how such a compiler option looks like: "-mfpu=fpv5-d16")
Only the 64-bit Aarch64 has cleaned up this mess, so for Armv8-A there is a well defined FPU instruction set, supported by all CPUs.
The Armv9.0-A and Armv9.2-A CPUs continue to support the original 64-bit FP instruction set, but they add SVE and SVE2.
The Armv9.3-A CPUs, launched last autumn, continue to support the original 64-bit FP instruction set + SVE + SVE2, but they add SME and SME2.
The Apple CPUs implement the original 64-bit FP instruction set but they do not implement SVE/SVE2 (except in a non-performant "streaming" mode), but in the past they had a non-documented AMX extension and now they have SME.
For a while it looked like ARM was trying to call the ARMv8 vector instruction set ASIMD instead of NEON, but they seem to have thrown in the towel as the ARM Intrinsics Guide simply refers to Neon.
Earlier Apple CPUs do not support SVE. Recent Apple CPUs support a certain variant of the so-called "streaming" SVE (which is included in the SME specification), which is implemented in a way that has poor performance, so it probably exists only for software compatibility, but its use is not recommended.
On Apple CPUs, the original 64-bit FP instructions must be used when low latency is important and SME must be used when high throughput is important.
Most Android smartphones that were launched on the market since around the beginning of 2022 support SVE, so by the end of this year there will be 5 years of availability.
Of course there are people who have not updated their smartphones. I still use an ASUS Zenfone from 2019, which precedes SVE (though I think that this year I might finally buy a new smartphone among those that use Mediatek 9500 or Exynos 2600, because I am curious to experiment with the new Arm SME2 instruction set). Among the cheapest smartphones, there are still sold some with old Cortex-A78 cores (launched in 2020), which do not support SVE.
NEON is an obsolete and inappropriate name, but I think that what you mean is that among the 64-bit Arm CPUs, all those that support SVE (which includes the CPUs of all recent so-called "gaming smartphones") also support the original Aarch64 floating-point instruction set, which is available in all 64-bit Arm CPUs that have been used in mobile phones, tablets or laptops.
NEON is a name that should never be used again, because it is extremely ambiguous. Whenever someone speaks about Arm NEON it is impossible to guess what instruction set is meant.
The 32-bit Arm architectures have used several kinds of floating-point units, with very distinct capabilities, so when compiling a program for 32-bit Arm CPUs you must always provide a specific FPU selecting option to the C/C++ compiler, the one correct for the target CPU, otherwise the performance will be suboptimal. (an example of how such a compiler option looks like: "-mfpu=fpv5-d16")
Only the 64-bit Aarch64 has cleaned up this mess, so for Armv8-A there is a well defined FPU instruction set, supported by all CPUs.
The Armv9.0-A and Armv9.2-A CPUs continue to support the original 64-bit FP instruction set, but they add SVE and SVE2.
The Armv9.3-A CPUs, launched last autumn, continue to support the original 64-bit FP instruction set + SVE + SVE2, but they add SME and SME2.
The Apple CPUs implement the original 64-bit FP instruction set but they do not implement SVE/SVE2 (except in a non-performant "streaming" mode), but in the past they had a non-documented AMX extension and now they have SME.
For a while it looked like ARM was trying to call the ARMv8 vector instruction set ASIMD instead of NEON, but they seem to have thrown in the towel as the ARM Intrinsics Guide simply refers to Neon.
Old hat. Should be SVE
Do the Apple CPUs support SVE? If not then it's not worth the hassle tbh (and support on Android devices doesn't seem to be great either).
Earlier Apple CPUs do not support SVE. Recent Apple CPUs support a certain variant of the so-called "streaming" SVE (which is included in the SME specification), which is implemented in a way that has poor performance, so it probably exists only for software compatibility, but its use is not recommended.
On Apple CPUs, the original 64-bit FP instructions must be used when low latency is important and SME must be used when high throughput is important.
Most Android smartphones that were launched on the market since around the beginning of 2022 support SVE, so by the end of this year there will be 5 years of availability.
Of course there are people who have not updated their smartphones. I still use an ASUS Zenfone from 2019, which precedes SVE (though I think that this year I might finally buy a new smartphone among those that use Mediatek 9500 or Exynos 2600, because I am curious to experiment with the new Arm SME2 instruction set). Among the cheapest smartphones, there are still sold some with old Cortex-A78 cores (launched in 2020), which do not support SVE.
Name a few big products with SVE and not NEON, within the gaming market
NEON is an obsolete and inappropriate name, but I think that what you mean is that among the 64-bit Arm CPUs, all those that support SVE (which includes the CPUs of all recent so-called "gaming smartphones") also support the original Aarch64 floating-point instruction set, which is available in all 64-bit Arm CPUs that have been used in mobile phones, tablets or laptops.
3 replies →