Posted to tcl by auriocus at Thu Nov 27 07:41:42 GMT 2014view raw
- 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;
- };