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
}
}
查看全文
相关阅读:
微信公众号的开通
支付宝同步请求检查appid,以及公钥,私钥是否正确
检查支付宝异步通知是否正确
支付宝开发者中心添加应用
js中undefined和null的区别
判断前端<input>标签是否选中(批量删除时,批量选择复选框)
P1396 营救+二分+BFS
P1396 营救+生成树
P1396 营救+最短路
P1195 口袋的天空
原文地址:https://www.cnblogs.com/len3d/p/818165.html
最新文章
中国互联网家喻户晓的四大神童,个个都是人才,他们现状怎么样?
郭盛华,是IT界的吕布吗?
拾取百度地图坐标的网址
鼠标移过属性出现闪烁
原生js显示和隐藏
去掉两个div之间的留白
微信小程序组件传值
微信小程序目录结构
curl 使用指南总结(常用命令)
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
热门文章
python 递归获取文件夹目录,获取文件夹下文件。存储到本地txt文件中。
python 脚本删除mysql数据表的操作
mysql 数据库取出字段md5加密后形成新字段再插入
ImportError: No module named parse
Error: [Errno 11001] getaddrinfo failed
Django 查询语句汇总
Python 怎样 DeBug? 极简DeBug工具PySnooper
sql语句收集
eclipse无法Debug,Debug 时候ClassNotFoundException的解决方法
System Java Compiler was not found in classpath:
Copyright © 2011-2022 走看看