*_dpbusd_epi32 或 *_maddubs_epi16 在 ARM 上等效?

Posted

技术标签:

【中文标题】*_dpbusd_epi32 或 *_maddubs_epi16 在 ARM 上等效?【英文标题】:*_dpbusd_epi32 or *_maddubs_epi16 equivalent on ARM? 【发布时间】:2019-12-31 08:05:32 【问题描述】:

我希望将一些 x86 内在代码移植到 ARM,但我正在努力寻找正确的资源。在开发x86 代码时,我主要使用这个网站来获取文档:https://software.intel.com/sites/landingpage/IntrinsicsGuide/。那里有 ARM 等价物吗?

我特别有兴趣找到 *_dpbusd_epi32 或 *_maddubs_epi16 内在函数的等价物(我对拥有 unsignedxsigned 并不太在意,它也可能是 signedx@ 987654330@)?

【问题讨论】:

我认为没有完全等价的。我会查看 vmull*vmlal* 指令以获得 s8*s8 --> s16 乘法(如何实际使用它们实际上取决于您实际想要做什么)。 【参考方案1】:

Arm 目前最接近的参考页面是这个:

https://developer.arm.com/architectures/instruction-sets/simd-isas/neon/intrinsics

它很实用,但缺少 Intel 的许多有用的搜索功能。

【讨论】:

以上是关于*_dpbusd_epi32 或 *_maddubs_epi16 在 ARM 上等效?的主要内容,如果未能解决你的问题,请参考以下文章

将字节相乘以产生 16 位,无需移位

VNNI 指令的 NEON 仿真

哪个跨平台预处理器定义? (__WIN32__ 或 __WIN32 或 WIN32 )?

霓虹灯等效于 mm_madd_epi16 和 mm_maddubs_epi16

如何用 gcc 或 clang 模拟 _mm256_loadu_epi32?

带有 char16_t 或 char32_t 的 Visual Studio C++ 2015 std::codecvt