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
}
}
查看全文
相关阅读:
IOS中延迟执行的几种方法
Xcode6中如何去掉默认的Main.storyboard
IOS7.0 UILabel实现自适应高度的新方法
UITabBarController常见代理方法的使用
Infopath 2010 接收SQL Server数据
olsr学习之一:Ubuntu10.04下ns2-allinone-2.34安装方法
常用工具遇到的错误以及解决方法
笔记本电脑选购个人的一些浅见
嵌入式题目集锦
关于网络传输字节顺序的问题: hton? or ntoh?
原文地址:https://www.cnblogs.com/len3d/p/818165.html
最新文章
【开源类库学习】MBProgressHUD(提示框)
【iOS微博客户端开发】1、微博整体项目的构建
iOS面试_1.浅析内存管理
UI控件---UIWebView
获取XIB子视图的两个方法
iOS开发笔记_5.线程,HTTP请求,定时器
iOS开发笔记_4自定义TabBar
小时候的零食与饮料
接触与感受动物
庭院花卉正含芳
热门文章
以诗记事
怀恋奶奶
怀恋爷爷
纪念李小文院士
从温哥华到班夫、欣顿的旅行。
SIGGRAPH 2014 之行
燕马巷小学
Xcode6中如何使用自定义的类模板
NSMutableDictionary中 setValue和setObject的区别
隐藏UITableView多余的分割线
Copyright © 2011-2022 走看看