zoukankan
html css js c++ java
用SSE汇编求向量的点积
class
__declspec(align(
16
)) vector4
{
public
:
union
{
struct
{
float
x, y, z, w; }
;
__m128 mm;
}
;
}
;
inline
void
dot3( vector4
&
r,
const
vector4
&
x,
const
vector4
&
y )
{
/**/
/*
register vector4 s;
s.mm = _mm_mul_ps( x.mm , y.mm );
r.mm = _mm_add_ss( s.mm , _mm_movehl_ps( s.mm , s.mm ) );
r.mm = _mm_add_ss( r.mm , _mm_shuffle_ps( r.mm , r.mm , 1 ) );
*/
__asm
{
mov ecx, y
mov edx, x
mov eax, r
movaps xmm0, xmmword ptr [ecx]
movaps xmm1, xmmword ptr [edx]
mulps xmm1, xmm0
//
xmm1 = s0, s1, s2, s3
movhlps xmm0, xmm1
//
xmm0 = s2, s3, *, *
addss xmm0, xmm1
//
xmm0 = s0+s2, s3, *, *
shufps xmm1, xmm1,
1
//
xmm1 = s1, s0, s0, s0
addss xmm0, xmm1
//
xmm0 = s0+s2+s1, s3, *, *
movaps xmmword ptr [eax], xmm0
}
}
inline
void
dot4( vector4
*
r,
const
vector4
*
x,
const
vector4
*
y )
{
/**/
/*
register vector4 s;
s.mm = _mm_mul_ps( x->mm , y->mm );
r->mm = _mm_add_ss( s.mm , _mm_movehl_ps( s.mm , s.mm ) );
r->mm = _mm_add_ss( r->mm , _mm_shuffle_ps( r->mm , r->mm , 1 ) );
r->mm = _mm_add_ss( r->mm , _mm_shuffle_ps( r->mm , r->mm , 3 ) );
*/
__asm
{
mov ecx, y
mov edx, x
mov eax, r
movaps xmm0, xmmword ptr [ecx]
movaps xmm1, xmmword ptr [edx]
mulps xmm1, xmm0
//
xmm1 = s0, s1, s2, s3
movhlps xmm0, xmm1
//
xmm0 = s2, s3, *, *
addss xmm0, xmm1
//
xmm0 = s0+s2, s3, *, *
shufps xmm1, xmm1,
253
//
xmm1 = s1, s3, s3, s3
addss xmm0, xmm1
//
xmm0 = s0+s2+s1, s3, *, *
movhlps xmm1, xmm1
//
xmm1 = s3, s3, s3, s3
addss xmm0, xmm1
//
xmm0 = s0+s2+s1+s3, s3, *, *
movaps xmmword ptr [eax], xmm0
}
}
查看全文
相关阅读:
Putting Apache Kafka To Use: A Practical Guide to Building a Stream Data Platform-part 2
Putting Apache Kafka To Use: A Practical Guide to Building a Stream Data Platform-part 1
Apache Kafka之设计
分布式内存文件系统Tachyon
Tachyon:Spark生态系统中的分布式内存文件系统
Python垃圾回收机制
一行 Python 实现并行化 -- 日常多线程操作的新思路
Hive SQL的编译过程
vim调整粘贴时的文本缩进
linux img文件 分区挂载
原文地址:https://www.cnblogs.com/len3d/p/818165.html
最新文章
centos5.11架设svn(svn系列 架设服务器 知识一总结)
window7使用svn(svn系列 客户端 知识二总结)
Eclipse从数据库逆向生成Hibernate实体类和映射文件(Eclipse插件系列之HibernateTools)
本博客的宗旨
phpstorm9整合本地apache和豆沙绿主题设置(附资源)
最详细win7下手动搭建PHP环境:apache2.4.23+php7.0.11
ssh项目java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoade错误
mysql快速导出数据库ER图和数据字典(附navicat11安装教程及资源)
ambari
Hbase 维护
热门文章
hbase copyTable
Phoenix 4.8
记录
IDEA 及 Gradle 使用总结
西蒙布朗-C4模型
Linux 让进程在后台可靠运行的几种方法
IntelliJ IDEA For Mac 快捷键
硬盘容量是否受限制【是】
开源列式存储引擎Parquet和ORC
浅析列式数据库的特点
Copyright © 2011-2022 走看看