SIMD在图像处理中的应用及汇编优化
SIMD(Single Instruction Multiple Data ),顾名思义,就是单条指令处理多个数据。比如我们处理BYTE类型的乘法,也是需要32位寄存器来做处理.这样显得有些浪费.实际上我们可以把乘数合并,一次32位的乘法得到两个乘法结果.示例代码如下:
R1 = a1*b;
R2 = a2*b;
转换成
T1 = (a1 | (a2 <<16))*b;
R1 = T1&0xffff;
R2 = T1>>16;
在游戏/多媒体等典型的图形处理应用中,我们经常需要对连续密集的数据进行处理.这正是SIMD长处.本文重点讨论利用SIMD思想对16色做alpha混合的处理以及相应的汇编优化.
二.简单应用
16色显示,由于人眼对绿色相对敏感,一般显卡对R5G6B5支持的更好.这时alpha值只需要分32级即可满足要求.即alpha值取[0,32].所以通用的混合逻辑大概如下:
u16bpp alpha16bpp(const u16bpp srcCol, u16bpp desCol, u8bpp alpha)
{
u16bpp b=(GET_BLUE(srcCol)*alpha + GET_BLUE(desCol)*(32-
SIMD在图像处理中的应用及汇编优化相关推荐
- AVS 帧内预测模式的汇编优化
王瑞* 基金项目:本课题得到国家自然科学基金资助项目基金(项目编号:60772101)的资助. 作者简介:王瑞(1986-), 男, 山东莱芜人, 硕士, 主要从事视频压缩方面的研究. E-mail: ...
- 浅谈代码的执行效率(4):汇编优化
终于谈到这个话题了,首先声明我不是汇编优化的高手,甚至于我知道的所有关于汇编优化的内容,仅仅来自于学校的课程.书本及当年做过的一些简单练习.换句话说,我了解的东西只能算是一些原则,甚至也有一些&quo ...
- 寻找下一款Prisma APP:深度学习在图像处理中的应用探讨
在9月23日到9月24日的MDCC 2016年中国移动者开发大会"人工智能与机器人"专场中,阿里云技术专家周昌进行了题为<寻找下一款Prisma APP:深度学习在图像处理中 ...
- Metal:对 iOS 中 GPU 编程的高度优化的框架
原文出处: Max Christ and Warren Moore 译文出处:migrant 欢迎分享原创到伯乐头条 Metal 框架支持 GPU 加速高级 3D 图像渲染,以及数据并行计算工 ...
- 【汇编优化】之arm64/AARCH64汇编优化
序 本文介绍arm架构64位neon汇编优化,适合于任何基础, 前文<arm架构32位优化>已经讲述arm的基本语法. 温馨提醒:嵌入式设备(即arm架构的板子)在编译时,最好加上 -fs ...
- 【汇编优化】之arm32汇编优化
序 本文介绍arm架构32位neon汇编优化,适合于任何基础. 温馨提醒:嵌入式设备(即arm架构的板子)在编译时,最好加上 -fsigned-char 因为嵌入式设备默认类型为unsigned ch ...
- 【汇编优化】之x86架构intrinsic优化
1.SSE Intrisic based on x86 x86架构下的优化有多种手段,常见的有纯汇编优化.inline汇编.Intrinsic优化.前两种对编译器的依赖比较大,跨平台(windows\ ...
- c语言间接寻址与指针,C语言中指针是不是用汇编的间接寻址实现的?
C语言中指针是不是用汇编的间接寻址实现的? 112 151 更新于 2014-08-05 看到间接寻址,想到指针,它们仅仅是相似,还是说指针就是用汇编的间接寻址实现的? c 关注收藏2 评论 阅读 5 ...
- 【优化系列】MIPS架构汇编优化资料
DATE: 2021.8.3 文章目录 前言 1.MIPS介绍 2.MIPS汇编入门基础 3.MIPS汇编优化手册 3.1.中文手册 3.2.英文手册 3.3.Loongson 3A 优化 前言 在学 ...
最新文章
- CPU 的一些基本知识总结
- Win10+Python3.6下Pytorch安装(基于conda或pip)
- pytorch torch.optim.lr_scheduler 各种使用和解释
- foreach迭代ArrayList时,真的不能删除元素吗?
- 我两小时学完指针,你学会数组/指针与函数需要多久?
- 水印鲁棒性的分析matlab程序,图像数字水印+matlab程序
- mvc中嵌入html,MVC Razor与javascript混编(js中嵌入razor)
- java addmonth_JAVA:int month = n.get(Calendar.MONTH)+1;为何要加1?
- 解决apache启动错误httpd:Could not reliably determine...
- 算法:二叉树从树叶到根部每层构成的数组队列107. Binary Tree Level Order Traversal II
- 1、ESP8266入门(AT模式)——调试连接,使用USB-TTL
- 我写的万年历插件(含天干地支,农历,阳历,节气,各种节假日等),基于MooTools 1.4
- Win7系统怎么截图快捷键
- mysql strlength_mySQL教程 第7章 存储过程和函数
- 宝宝起名神器小程序源码
- 学生家乡网页设计作品静态HTML网页模板源码 广西旅游景点网页设计 大学生家乡主题网站制作 简单家乡介绍网页设计成品
- Android实现百度网盘一些功能
- 【acadres.dll文件丢失怎么办】acadres.dll文件丢失的解决办法
- JAVA中的deflate压缩实现
- React.Meno
热门文章
- RabbitMQ工作流程和工作模式详解
- Android 日志输出(println、logv、logd、logi、logw、loge、logwtf)
- Linux之旅-第一个内核打印信息
- 软件测试题(更新中)
- failed: Too many links 解决
- 计算机专业中级工程师论文样本,中级职称专业论文范文
- 应用程序无法正常启动,因为应用程序的并行配置不正确
- 目标检测中NMS(non maximum suppression)
- ip地址计算可用计算机数,可用网络地址数,可用主机地址数都是如何算的?
- JAVA模拟实现双色球开奖结果