【发布时间】:2021-12-01 05:57:43
【问题描述】:
我正在开展一个项目,以使用 NEON 内在函数加速 ARM 平台上的性能。
我找不到以下内在函数的直接等效项 _mm_mulhi_epi16 _mm_hadd_epi32 _mm_maddubs_epi16 _mm_madd_epi16 _mm_extract_epi8
等效的内在函数对我的工作有很大帮助
【问题讨论】:
-
不一定存在直接等价物,例如我所知道的
_mm_mulhi_epi16没有。您可以使用smull和一些排列来模拟它,但最好退后一步看看您的实际算法,而不是尝试一对一地替换指令。可能还有另一种实现方式,更符合 ARM64 实际拥有的指令。 -
vqdmulh_s16是。您甚至可以使用vqrdmulh_s16对值进行四舍五入 -
请注意,该指令会导致 q15,而 Intel 会导致 q14。
-
总的来说这是一个很好的灵感来源github.com/DLTcollab/sse2neon