Posted to tcl by auriocus at Thu Nov 27 07:41:42 GMT 2014view pretty
for (int i=0; i<length; i++) { /*const double x=(*temp1ptr); const double y=(*temp2ptr); (*temp7ptr) = (*temp1ptr)*(*temp1ptr)+(*temp2ptr)*(*temp2ptr)+(*temp1ptr)*(*temp2ptr); */ /* double temp3; double temp4; double temp5; double temp6; temp6 = (*temp1ptr)*(*temp2ptr); temp4 = (*temp2ptr)*(*temp2ptr); temp3 = (*temp1ptr)*(*temp1ptr); temp5 = temp3+temp4; (*temp7ptr) = temp5+temp6; */ double x=(*temp1ptr); double y=(*temp2ptr); double result; /* (*temp7ptr) = x*x+y*y+x*y; */ asm ( "movsd %0, %%xmm0\n" "movsd %1, %%xmm1\n" "movsd %%xmm0, %%xmm3\n" "mulsd %%xmm0, %%xmm3\n" "movsd %%xmm1, %%xmm2\n" "mulsd %%xmm1, %%xmm2\n" "addsd %%xmm3, %%xmm2\n" "movsd %%xmm2, %2\n" : "=m"(x), "=m"(y) : "m"(result) : "xmm0", "xmm1", "xmm2", "xmm3" ); *temp7ptr++=result; temp1ptr += temp1pitch; temp2ptr += temp2pitch; };