diff options
| -rw-r--r-- | src/mesa/x86/x86.c | 3 | ||||
| -rw-r--r-- | src/mesa/x86/x86_cliptest.S | 19 | 
2 files changed, 17 insertions, 5 deletions
diff --git a/src/mesa/x86/x86.c b/src/mesa/x86/x86.c index ddcfe86a75..b2b442c87e 100644 --- a/src/mesa/x86/x86.c +++ b/src/mesa/x86/x86.c @@ -1,4 +1,4 @@ -/* $Id: x86.c,v 1.21 2001/03/30 14:44:43 gareth Exp $ */ +/* $Id: x86.c,v 1.22 2001/05/13 18:55:15 gareth Exp $ */  /*   * Mesa 3-D graphics library @@ -85,7 +85,6 @@ void _mesa_init_x86_transform_asm( void )     ASSIGN_XFORM_GROUP( x86, 3 );     ASSIGN_XFORM_GROUP( x86, 4 ); -   /* XXX this function has been found to cause FP overflow exceptions */     _mesa_clip_tab[4] = _mesa_x86_cliptest_points4;     _mesa_clip_np_tab[4] = _mesa_x86_cliptest_points4_np; diff --git a/src/mesa/x86/x86_cliptest.S b/src/mesa/x86/x86_cliptest.S index f228274ded..76f34d5d5c 100644 --- a/src/mesa/x86/x86_cliptest.S +++ b/src/mesa/x86/x86_cliptest.S @@ -1,4 +1,4 @@ -/* $Id: x86_cliptest.S,v 1.6 2001/03/28 20:44:44 gareth Exp $ */ +/* $Id: x86_cliptest.S,v 1.7 2001/05/13 18:55:15 gareth Exp $ */  /*   * Mesa 3-D graphics library @@ -149,7 +149,12 @@ LLBL( ctp4_clip_table_ready ):  ALIGNTEXT16  LLBL( ctp4_top ): -	FLD1			/* F3 */ +	MOV_L( SRC(3), ECX ) +	FLD1				/* F3 */ + +	TEST_L( ECX, ECX )		/* GH: If src[3] is zero, abort */ +	JZ( LLBL( ctp4_noproj ) ) +  	FDIV_S( SRC(3) )  	MOV_L( SRC(3), EBP ) @@ -198,7 +203,15 @@ LLBL( ctp4_top ):  	JZ( LLBL( ctp4_proj ) ) -	FSTP( ST(0) )			/* */ +LLBL( ctp4_noproj ): + +	FLDZ				/* F0 F3 */ + +	FST_S( DST(0) )			/* F0 F3 */ +	FST_S( DST(1) )			/* F0 F3 */ +	FSTP_S( DST(2) )		/* F3 */ +	FSTP_S( DST(3) )		/* */ +  	JMP( LLBL( ctp4_next ) )  LLBL( ctp4_proj ):  | 
