一.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在图像处理中的应用及汇编优化相关推荐

  1. AVS 帧内预测模式的汇编优化

    王瑞* 基金项目:本课题得到国家自然科学基金资助项目基金(项目编号:60772101)的资助. 作者简介:王瑞(1986-), 男, 山东莱芜人, 硕士, 主要从事视频压缩方面的研究. E-mail: ...

  2. 浅谈代码的执行效率(4):汇编优化

    终于谈到这个话题了,首先声明我不是汇编优化的高手,甚至于我知道的所有关于汇编优化的内容,仅仅来自于学校的课程.书本及当年做过的一些简单练习.换句话说,我了解的东西只能算是一些原则,甚至也有一些&quo ...

  3. 寻找下一款Prisma APP:深度学习在图像处理中的应用探讨

    在9月23日到9月24日的MDCC 2016年中国移动者开发大会"人工智能与机器人"专场中,阿里云技术专家周昌进行了题为<寻找下一款Prisma APP:深度学习在图像处理中 ...

  4. Metal:对 iOS 中 GPU 编程的高度优化的框架

    原文出处: Max Christ and Warren Moore   译文出处:migrant   欢迎分享原创到伯乐头条 Metal 框架支持 GPU 加速高级 3D 图像渲染,以及数据并行计算工 ...

  5. 【汇编优化】之arm64/AARCH64汇编优化

    序 本文介绍arm架构64位neon汇编优化,适合于任何基础, 前文<arm架构32位优化>已经讲述arm的基本语法. 温馨提醒:嵌入式设备(即arm架构的板子)在编译时,最好加上 -fs ...

  6. 【汇编优化】之arm32汇编优化

    序 本文介绍arm架构32位neon汇编优化,适合于任何基础. 温馨提醒:嵌入式设备(即arm架构的板子)在编译时,最好加上 -fsigned-char 因为嵌入式设备默认类型为unsigned ch ...

  7. 【汇编优化】之x86架构intrinsic优化

    1.SSE Intrisic based on x86 x86架构下的优化有多种手段,常见的有纯汇编优化.inline汇编.Intrinsic优化.前两种对编译器的依赖比较大,跨平台(windows\ ...

  8. c语言间接寻址与指针,C语言中指针是不是用汇编的间接寻址实现的?

    C语言中指针是不是用汇编的间接寻址实现的? 112 151 更新于 2014-08-05 看到间接寻址,想到指针,它们仅仅是相似,还是说指针就是用汇编的间接寻址实现的? c 关注收藏2 评论 阅读 5 ...

  9. 【优化系列】MIPS架构汇编优化资料

    DATE: 2021.8.3 文章目录 前言 1.MIPS介绍 2.MIPS汇编入门基础 3.MIPS汇编优化手册 3.1.中文手册 3.2.英文手册 3.3.Loongson 3A 优化 前言 在学 ...

最新文章

  1. CPU 的一些基本知识总结
  2. Win10+Python3.6下Pytorch安装(基于conda或pip)
  3. pytorch torch.optim.lr_scheduler 各种使用和解释
  4. foreach迭代ArrayList时,真的不能删除元素吗?
  5. 我两小时学完指针,你学会数组/指针与函数需要多久?
  6. 水印鲁棒性的分析matlab程序,图像数字水印+matlab程序
  7. mvc中嵌入html,MVC Razor与javascript混编(js中嵌入razor)
  8. java addmonth_JAVA:int month = n.get(Calendar.MONTH)+1;为何要加1?
  9. 解决apache启动错误httpd:Could not reliably determine...
  10. 算法:二叉树从树叶到根部每层构成的数组队列107. Binary Tree Level Order Traversal II
  11. 1、ESP8266入门(AT模式)——调试连接,使用USB-TTL
  12. 我写的万年历插件(含天干地支,农历,阳历,节气,各种节假日等),基于MooTools 1.4
  13. Win7系统怎么截图快捷键
  14. mysql strlength_mySQL教程 第7章 存储过程和函数
  15. 宝宝起名神器小程序源码
  16. 学生家乡网页设计作品静态HTML网页模板源码 广西旅游景点网页设计 大学生家乡主题网站制作 简单家乡介绍网页设计成品
  17. Android实现百度网盘一些功能
  18. 【acadres.dll文件丢失怎么办】acadres.dll文件丢失的解决办法
  19. JAVA中的deflate压缩实现
  20. React.Meno

热门文章

  1. RabbitMQ工作流程和工作模式详解
  2. Android 日志输出(println、logv、logd、logi、logw、loge、logwtf)
  3. Linux之旅-第一个内核打印信息
  4. 软件测试题(更新中)
  5. failed: Too many links 解决
  6. 计算机专业中级工程师论文样本,中级职称专业论文范文
  7. 应用程序无法正常启动,因为应用程序的并行配置不正确
  8. 目标检测中NMS(non maximum suppression)
  9. ip地址计算可用计算机数,可用网络地址数,可用主机地址数都是如何算的?
  10. JAVA模拟实现双色球开奖结果