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
}
}
查看全文
相关阅读:
实验六 进程基础
实验五 shell脚本编程
实验四 Linux系统搭建C语言编程环境
实验三 Linux系统用户管理及VIM配置
实验二 Linux系统简单文件操作命令
实验一 Linux系统与应用准备
实验八 进程间的通信
实验七 信号
实验六 进程基础
实验五 shell脚本编程
原文地址:https://www.cnblogs.com/len3d/p/818165.html
最新文章
浅谈树状数组
KMP
整除分块
字典树(Trie树)
Sign-in users and all the Microsoft Graph API from an Android app
算法第四版 谢路云译 第一章参考答案(java实现) 持续更新中 欢迎评论留意见
安卓开发工程师笔试面试资料汇总
Tensorflow搭建出现的问题
steam送新用户礼物解决方法
“MySQL 服务正在启动 . MySQL 服务无法启动。 服务没有报告任何错误。”的解决方案
热门文章
CentOS 版本选择:DVD、Everything、LiveCD、Minimal、NetInstall
Markdown 的效果
我进入公司的2个月
js 深拷贝的实现
nodejs安装与环境变量配置
卸载MySQL,删除mysql服务。
windows下Xming调用linux的图形界面
MySql数据库导入sql错误 Unknown collation: ‘utf8mb4_0900_ai_ci‘
实验八 进程间通信
实验七 信号
Copyright © 2011-2022 走看看