Assembly x64 Intro - SSE2 Copy16Times
2015-12-16 09:20
260 查看
;copy a db into a xmm for 16 times
%macro SSE2_Copy16Times 2
movd %1, %2
pshuflw %1, %1, 0
punpcklqdq %1, %1
packuswb %1, %1
%endmacro
movzx r2d, byte [r0] ; pixel pData for left border
SSE2_Copy16Times xmm0, r2d ; dst, tmp, pSrc [generic register name: a/b/c/d]
假设 [ r0 ] = 0x07
上面将展开如下:
movzx r2d, byte [r0] => r2d = 0x00000007
movd xmm0, r2d => xmm0 = 0x00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07
pshuflw xmm0, xmm0, 0 => xmm0 = 0x0000 0000 0000 0000 0007 0007 0007 0007
punpcklqdq xmm0, xmm0 = > xmm0 = 0x0007 0007 0007 0007 0007 0007 0007 0007
packuswb xmm0, xmm0 => xmm0 = 0x0707 0707 0707 0707 0707 0707 0707 0707
%macro SSE2_Copy16Times 2
movd %1, %2
pshuflw %1, %1, 0
punpcklqdq %1, %1
packuswb %1, %1
%endmacro
movzx r2d, byte [r0] ; pixel pData for left border
SSE2_Copy16Times xmm0, r2d ; dst, tmp, pSrc [generic register name: a/b/c/d]
假设 [ r0 ] = 0x07
上面将展开如下:
movzx r2d, byte [r0] => r2d = 0x00000007
movd xmm0, r2d => xmm0 = 0x00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07
pshuflw xmm0, xmm0, 0 => xmm0 = 0x0000 0000 0000 0000 0007 0007 0007 0007
punpcklqdq xmm0, xmm0 = > xmm0 = 0x0007 0007 0007 0007 0007 0007 0007 0007
packuswb xmm0, xmm0 => xmm0 = 0x0707 0707 0707 0707 0707 0707 0707 0707
相关文章推荐
- 图像处理算法基础(六)---sobel算子自实现与opencv对比
- OperationDemo2
- shm_open 与 open
- time opt
- linux 远程ssh链接介绍
- 项目讨论:本地手机经销商如何用移动网站开展本地营销?
- While reading /Users/cola/Desktop/csun first 2/Res/Quasar/Quasar_Tex_Up.png pngcrush caught libpng
- Apache 安全设置(持续记录)
- kafka清空topics
- Hadoop Kernel tunning
- Apache ab 压力测试出现 Failed requests
- 期中架构心得
- linux下rpm安装MySQL
- OpenGL ES 学习教程(九) 油腻的效果 Lighting Maps 高光贴图
- Linux防火墙(Iptables)的开启与关闭
- 关于OpenCart的一个小建议
- 关于开源项目中 Apache 开源协议的一些介绍
- linux下的setenv使用
- 马哥linux学习笔记:locate,find命令总结
- TOMCat 解析shtml(配置tomcat让shtml嵌套文件显示)