• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在 iOS 上使用 NEON 乘积

[复制链接]
菜鸟教程小白 发表于 2022-12-12 23:11:53 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

即使我只为 armv7 进行编译,NEON 乘法累加内在函数似乎被分解为单独的乘法和加法。

我在 Xcode 最新 4.5 的多个版本、iOS SDK 5 到 6 以及不同的优化设置(通过 Xcode 构建和直接通过命令行构建)都经历过这种情况。

例如,构建和反汇编一些 test.cpp 包含

#include <arm_neon.h>

float32x4_t test( float32x4_t a, float32x4_t b, float32x4_t c )
{
   float32x4_t result = a;
   result = vmlaq_f32( result, b, c );
   return result;
}

clang++ -c -O3 -arch armv7 -o "test.o" test.cpp
otool -arch armv7 -tv test.o

结果

test.o:
(__TEXT,__text) section
__Z4test19__simd128_float32_tS_S_:
00000000    f10d0910    add.w   r9, sp, #16 @ 0x10
00000004        46ec    mov ip, sp
00000006    ecdc2b04    vldmia  ip, {d18-d19}
0000000a    ecd90b04    vldmia  r9, {d16-d17}
0000000e    ff420df0    vmul.f32    q8, q9, q8
00000012    ec432b33    vmov    d19, r2, r3
00000016    ec410b32    vmov    d18, r0, r1
0000001a    ef400de2    vadd.f32    q8, q8, q9
0000001e    ec510b30    vmov    r0, r1, d16
00000022    ec532b31    vmov    r2, r3, d17
00000026        4770    bx  lr

而不是 vmla.f32 的预期用途。

请问我做错了什么?



Best Answer-推荐答案


这是一个错误或 llvm-clang 的优化。 armcc 或 gcc 会按照您的预期生成 vmla,但如果您阅读 Cortex-A 系列程序员指南 v3,它会说:

20.2.3 Scheduling

In some cases there can be a considerable latency, particularly VMLA multiply-accumulate (five cycles for an integer; seven cycles for a floating-point). Code using these instructions should be optimized to avoid trying to use the result value before it is ready, otherwise a stall will occur. Despite having a few cycles result latency, these instructions do fully pipeline so several operations can be in flight at once.

因此,llvm-clang 将 vmla 分离为乘法并累加以填充管道是有意义的。

关于ios - 在 iOS 上使用 NEON 乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12932940/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap