WEB开发网
开发学院软件开发C++ Pentium III处理器的单指令多数据流扩展指令(3)... 阅读

Pentium III处理器的单指令多数据流扩展指令(3)

 2010-10-15 09:08:09 来源:Web开发网   
核心提示:4. 附加示例在这一节,我们将向你介绍几个SSE指令集(Streaming SIMD Extensions)使用的例子.4.1 数组操作下面的例子中,我们创建了两个数组,每个包含400个浮点数.将两个数组的每个元素相乘,结果保存在第三个数组中.前面两个数组作为操作数A和B,保存结果的数组为C.下面给出所有的代码.#in

4. 附加示例

在这一节,我们将向你介绍几个SSE指令集(Streaming SIMD Extensions)使用的例子.

4.1 数组操作

下面的例子中,我们创建了两个数组,每个包含400个浮点数.将两个数组的每个元素相乘,结果保存在第三个数组中.前面两个数组作为操作数A和B,保存结果的数组为C.下面给出所有的代码.

#include < FVEC.H >
#define ARRSIZE 400
__declspec(align(16)) float a[ARRSIZE], b[ARRSIZE], c[ARRSIZE];

4.1.1 Assembly Language

_asm{

push esi;

push edi;

mov edi, a;

mov esi, b;

mov edx, c;

mov ecx, 100;
loop:

movaps xmm0, [edi];

movups xmm1, [esi];

mulps xmm0, xmm1;

movups [edx], xmm0;

add edi, 16;

add esi, 16;

add edx, 16;

dec ecx;

jnz loop;

pop edi;

pop esi;
}

4.1.2 Intrinsics

__m128 m1, m2, m3;
for ( int i = 0; i < ARRSIZE; i += 4 )
{

m1= _mm_loadu_ps(a+i);

m2= _mm_loadu_ps(b+i);

m3= _mm_mul_ps(m1,m2);

_mm_storeu_ps(c+i, m3);
}

上一页  1 2 3 4 5 6 7 8  下一页

Tags:Pentium III 处理器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接