SSE 向量乘矩阵
struct Vector4
{
float x, y, z, w;
};
struct Matrix
{
float _M[][];
}; void SSE_VectorMultiplyMatrix(const Vector4& v,const Matrix& m1,Vector4& ret)
{
Vector4 va,vb,vc,vd;
Vector4 *pva,*pvb,*pvc,*pvd;
const Vector4 *pv;
//取出矩阵每一列
va.x = m1._M[][];
va.y = m1._M[][];
va.z = m1._M[][];
va.w = m1._M[][]; vb.x = m1._M[][];
vb.y = m1._M[][];
vb.z = m1._M[][];
vb.w = m1._M[][]; vc.x = m1._M[][];
vc.y = m1._M[][];
vc.z = m1._M[][];
vc.w = m1._M[][]; vd.x = m1._M[][];
vd.y = m1._M[][];
vd.z = m1._M[][];
vd.w = m1._M[][]; pva = &va;
pvb = &vb;
pvc = &vc;
pvd = &vd;
pv = &v;
__asm
{
//矩阵四列放入mmx0-mmx3
MOV EAX, pva // Load pointer into CPU reg
MOVUPS XMM0, [EAX]
MOV EAX, pvb // Load pointer into CPU reg
MOVUPS XMM1, [EAX]
MOV EAX, pvc // Load pointer into CPU reg
MOVUPS XMM2, [EAX]
MOV EAX, pvd // Load pointer into CPU reg
MOVUPS XMM3, [EAX] //向量放入 mmx4
MOV EAX, pv
MOVUPS XMM4, [EAX] //向量点乘矩阵每列
MULPS XMM0,XMM4
MULPS XMM1,XMM4
MULPS XMM2,XMM4
MULPS XMM3,XMM4 //输出四个分量
MOVUPS [va], XMM0
MOVUPS [vb], XMM1
MOVUPS [vc], XMM2
MOVUPS [vd], XMM3
} //四个分量求和得变换后向量
ret.x = va.w + va.x + va.y + va.z;
ret.y = vb.w + vb.x + vb.y + vb.z;
ret.z = vc.w + vc.x + vc.y + vc.z;
ret.w = vd.w + vd.x + vd.y + vd.z; }
SSE 向量乘矩阵的更多相关文章
- 学习笔记DL004:标量、向量、矩阵、张量,矩阵、向量相乘,单位矩阵、逆矩阵
线性代数,面向连续数学,非离散数学.<The Matrix Cookbook>,Petersen and Pedersen,2006.Shilov(1977). 标量.向量.矩阵.张量. ...
- Matlab、R向量与矩阵操作 z
已有 1849 次阅读 2012-8-2 15:15 |系统分类:科研笔记|关键词:矩阵 480 window border center Matlab.R向量与矩阵操作 描 述 Matla ...
- MATLAB 的向量,矩阵和阵列命令
MATLAB 的向量,矩阵和阵列命令:
- R语言学习——向量,矩阵
在R中,基本的数据结构有:向量,矩阵,数组,数据框,列表,因子,函数等. 向量:一系列同类型的有序元素构成. 向量是一维结构. 向量是R最简单的数据结构,在R中没有标量. 标量被看成1个元素的向量. ...
- 应用线性代数简介 - 向量,矩阵和最小二乘法 By Stephen Boyd and Lieven Vandenberghe
Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares 应用线性代数简介 - 向量,矩阵和最小二乘法 ...
- Matlab、R向量与矩阵操作
Matlab.R向量与矩阵操作 描 述 Matlab R 1 建立行向量v=[1 2 3 4] v=[1 2 3 4] v<-c(1,2,3,4)或v<-scan(),然后输入 ...
- 第四十篇 入门机器学习——Numpy.array的基本操作——向量及矩阵的运算
No.1. Numpy.array相较于Python原生List的性能优势 No.2. 将向量或矩阵中的每个元素 + 1 No.2. 将向量或矩阵中的所有元素 - 1 No.3. 将向量或矩阵中的所有 ...
- 《学习R》笔记:科学计算器、检查变量和工作区、向量、矩阵和数组、列表和数据框
一.第二章 科学计算器 要检查两个数字是否一样,要使用 all.equal() ,不要使用 == ,== 符号仅用于比较两个整型数是否存在相同 . > all.equal(sqrt(2)^2,2 ...
- NX二次开发-向量乘矩阵的几何意义
函数:UF_MTX3_vec_multiply_t() 或者UF_MTX3_vec_multiply().推荐使用UF_MTX3_vec_multiply_t() 函数说明:将向量按照矩阵进行变换:绝 ...
随机推荐
- IOS runtime运行机制详解(一)
OC运行机制是指,可以运行的时候动态调用函数.因为C语言必须在编译的时候就决定调用哪个函数. 我们平时写的OC代码,它在运行的时候也是转换成了runtime的方式运行的.任何方法调用本质:就是发送一个 ...
- POJ 3616 奶牛挤奶
Milking Time 贝茜是一个勤劳的牛.事实上,她如此专注于最大化她的生产力,于是她决定安排下一个N(1≤N≤1,000,000)小时(方便地标记为0..N-1),以便她生产尽可能多的牛奶. ...
- vim实现实时自动保存
进https://www.vim.org/scripts/script.php?script_id=4521网站下载vim -auto-save wget https://www.vim.org/s ...
- 请为CMyString类型编写构造函数、copy构造函数、析构函数和赋值运算符函数。
如下为类型CMyString的声明,请为该类型编写构造函数.copy构造函数.析构函数和赋值运算符函数. class CMyString { public: CMyString(const char* ...
- MIUI8系统完整刷入开发版开启root权限的经验
小米的机器不同手机型号一般情况官网都提供两个不同的安卓系统版本,可分为稳定版和开发版,稳定版没有提供root超级权限管理,开发版中就支持了root超级权限,很多情况我们需要使用的一些功能强大的APP, ...
- C++之标准库map
目录 1.成员函数 2.元素访问 3.迭代器Iterators(C++ 11) 4.容量Capacity 5.修改函数(C++ 11和C++ 17) 6.查找表Lookup 7.观察Observers ...
- linux-基础命令篇-02
基本命令:--LS 关于显示的颜色含义: 白色:表示普通文件 蓝色:表示目录 绿色:表示可执行文件 红色:表示压缩文件 浅蓝色:链接文件 红色闪烁:表示链接的文件有问题 黄色:表示设备文件 灰色:表示 ...
- sass学习小记
错误 在sass命令行编译中遇到了一个错误: error E:/前端2/css揭秘/CSS-study/css揭秘/css揭秘.scss (Line 29: Invalid GBK character ...
- python修炼第一天
Python修炼第一天 新的开始:不会Python的运维,人生是不完整的. 为了我的人生能够完整,所以我来了!今后跟着太白金星师傅学习功夫,记录一下心得,以便日后苦练. 一 Python的历史: Py ...
- 3ci