![](/img/trans.png)
[英]Do I need to make multiple executables for targeting different instruction sets?
[英]How do I Detect Availability of NEON and Helium Instruction Sets at Runtime
我正在开发一个跨平台的并行数学库,并且在为 x86/amd64 实现 SSE、AVX、AVX2 和 AVX-512 方面取得了很大进展,包括 ISA 可用性的运行时检测。
但是,我遇到了一个大问题。 MSVC 上没有在运行时检测 NEON 或 Helium 支持的文档。 ARM 或 ARM64 上似乎没有cpuid
指令。 目前还不清楚是否有跨平台的方式来为 Linux 实现这一点。
您甚至需要手动检测它还是可以只使用预处理器定义(例如_M_ARM64
)来检查运行时支持? 我的理解是预处理器宏仅在编译时进行评估。
我们是否应该假设每个 ARM CPU 都有 NEON? 氦气呢?
我希望这里有人知道怎么做。 先感谢您。
NEON
和VFP
在armv8-a
上是强制性armv8-a
。
因此,无需在运行时检查aarch64
上的aarch64
。
我会完全aarch32
对aarch32
支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.