dot product question

I compared large vector dot product with SSE and CUDA.but in the loop,the SSE version has

this result:

numeric

-1#…

numeric

-1#…

.

.

.

.

.

.

the “numeric” should be difference every for iterations,but now it as the same.

and overflow in the odd iterations,why? this`s my SSE code :

[FONT=Courier]

float sdot(const float3* v0,const float3* v1,int n)

{

 Â Â Â float lmem;

 Â Â Â __asm{

 Â Â Â Â Â Â Â MOV Â Â Â Â esi,DWORD PTR [v0]

 Â Â Â Â Â Â Â MOV Â Â Â Â edi,DWORD PTR [v1]

 Â Â Â Â Â Â Â MOV Â Â Â Â ecx,n

 Â Â Â Â Â Â Â PXOR Â Â Â xmm0,xmm0

 Â CALC:

 Â Â Â Â Â Â Â MOVAPS xmm1,XMMWORD PTR [esi]

 Â Â Â Â Â Â Â MOVAPS xmm2,XMMWORD PTR [edi]

 Â Â Â Â Â Â Â MULPS xmm1,xmm2

 Â Â Â Â Â Â Â ADDPS xmm0,xmm1

 Â Â Â Â Â Â Â ADD Â Â Â Â esi,16

 Â Â Â Â Â Â Â ADD Â Â Â Â edi,16

 Â Â Â Â Â Â Â LOOP Â Â Â CALC

 Â Â Â Â Â Â Â HADDPS xmm0,xmm0

 Â Â Â Â Â Â Â HADDPS xmm0,xmm0

 Â Â Â Â Â Â Â LEA Â Â Â edi,DWORD PTR [lmem]

 Â Â Â Â Â Â Â MOVSS  DWORD PTR [edi],xmm0

 Â Â Â }

 Â Â Â return lmem;

}

[/FONT]