大前端CPU优化技术--NEON编程优化技巧

前言

在前面的文章中我们介绍了NEON的基础,NEON技术的全景,指令及NEON intrinsic指令,相信大家能通过前面的学习写一些简单的NEON程序。但要想写好一个性能高的NEON程序,远不止你以为的那么简单,所以接下来我会给大家在NEON编程中一些优化技巧,助力程序性能起飞。

数据处理

最经典的处理图像的RGB数据,24-bit的RGB图画,像素在内存里的排列布局是R, G, B, R, G, B...,假如你想做一个简单的图像数据处理,比如把R和B通道交流,你该怎么高效的运用NEON协处理器呢?

首要从存储空间线性加载RGB数据到D寄存器,然后交流R和B数据。 可是这种线性加载的数据进行R和B通道的数据交流十分费事,需求首要掩码mask,然后移位并兼并掩码数据。这种杂乱的运算明显并不高效。线性加载RGB数据 ,如下图:

NEON本身已支持多种数据结构的加载和存储指令来处理这种状况,这些指令能把数据从存储区加载还能把这些值分隔存储到不同的寄存器中,你能够运用VLD3加载来把RGB数据分隔存储。运用结构化的加载指令加载RGB数据,如下图:

然后运用VLD3分隔加载的数据就能便利的运用指令(VSWP d0, d2)来进行R和B通道的交流了,然后把成果再写入内存,当然也要运

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值