__asm { movd mm0, x // mm0 = (x, ?) pfrsqrt mm1, mm0 // mm1 = (~1 / sqrt(x), ?) movq mm2, mm1 // mm2 = mm1 pfmul mm1, mm1 // mm1 = mm1 * mm1 pfrsqit1 mm1, mm0 // first iteration of Newton-Rhapson pfrcpit2 mm1, mm2 // second iteration punpckldq mm1, mm1 // mm1 = (1 / sqrt(x), ?) pfmul mm0, mm1 // mm0 = (sqrt(x), ?) movd y, mm0 // store result femms // clear MMX state }