sse实现向量相减,为何崩溃?
我在vc2010中建了一个控制台工程,想测试一下SSE(就是实现一个向量相减),但程序老是崩溃,搞不懂什么原因。
// test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#include <xmmintrin.h>//sse
void sub(float *v1,float *v2,float *vrs){
__m128*r=(__m128*)vrs;
*r=_mm_sub_ps(*(__m128*)v1,*(__m128*)v2);
}
int _tmain(int argc, _TCHAR* argv[])
{
float a[4]={1,1,1,1};
float b[4]={1,1,1,1};
float c[4];
sub(a,b,c);
std::cout<<c[0]<<" "<<c[1]<<" "<<c[2]<<std::endl;
return 0;
}
[解决办法]
看起来很高深,希望快点解决。
[解决办法]
是不是想要这样。
#include<iostream>#include <xmmintrin.h>struct Vec4{ union { __m128 v; struct { float x, y, z, w; }; };};int main(){ Vec4 a = {5,6,7,8}; Vec4 b = {1,1,1,1}; Vec4 c; c.v = _mm_sub_ps(a.v, b.v); std::cout<<c.x<<" "<<c.y<<" "<<c.z<<" "<<c.w<<std::endl; return 0;}
[解决办法]