PXOR user in code were causing the lowest SP float register to have NaN values which made all math operations in that slot fail. Correct istruction to clear float registers is XORPS which handles single precission floats correctly.
Fixes progs/tests/fog in swrast SSE mode. Signed-off-by: Pauli Nieminen <suok...@gmail.com> --- src/mesa/x86/sse_xform2.S | 2 +- src/mesa/x86/sse_xform3.S | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mesa/x86/sse_xform2.S b/src/mesa/x86/sse_xform2.S index b490d4c..a443dad 100644 --- a/src/mesa/x86/sse_xform2.S +++ b/src/mesa/x86/sse_xform2.S @@ -186,7 +186,7 @@ GLNAME(_mesa_sse_transform_points2_3d_no_rot): MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */ ADD_L( EDI, ECX ) /* count += dest ptr */ - PXOR( XMM0, XMM0 ) + XORPS( XMM0, XMM0 ) /* clean the working register */ ALIGNTEXT32 MOVSS ( M(0), XMM1 ) /* - | - | - | m0 */ diff --git a/src/mesa/x86/sse_xform3.S b/src/mesa/x86/sse_xform3.S index 8a79eed..4bc22d8 100644 --- a/src/mesa/x86/sse_xform3.S +++ b/src/mesa/x86/sse_xform3.S @@ -198,7 +198,7 @@ GLNAME(_mesa_sse_transform_points3_3d_no_rot): MOV_L( REGOFF(V4F_START, EDI), EDI ) /* ptr to first dest vertex */ ADD_L( EDI, ECX ) /* count += dest ptr */ - PXOR( XMM0, XMM0 ) + XORPS( XMM0, XMM0 ) /* clean the working register */ ALIGNTEXT32 MOVSS ( M(0), XMM1 ) /* - | - | - | m0 */ -- 1.6.3.3 ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev