aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith Whitwell <[email protected]>2008-05-01 15:27:53 +0100
committerKeith Whitwell <[email protected]>2008-05-01 15:37:30 +0100
commit47aa416821b69d3afa33c79ec8cb8499688a0e8e (patch)
tree1f874c87203fcdf4db75478c064255e3a61e491a
parent7810e7f623a47978cdd1a167cc9e6b743d56d949 (diff)
tgsi: use EBX everywhere, be sure to push/pop it
-rwxr-xr-xsrc/gallium/auxiliary/tgsi/exec/tgsi_sse2.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/gallium/auxiliary/tgsi/exec/tgsi_sse2.c b/src/gallium/auxiliary/tgsi/exec/tgsi_sse2.c
index 5e133a96634..06df3dbb05b 100755
--- a/src/gallium/auxiliary/tgsi/exec/tgsi_sse2.c
+++ b/src/gallium/auxiliary/tgsi/exec/tgsi_sse2.c
@@ -103,15 +103,9 @@ get_output_base( void )
static struct x86_reg
get_temp_base( void )
{
-#ifdef WIN32
return x86_make_reg(
file_REG32,
reg_BX );
-#else
- return x86_make_reg(
- file_REG32,
- reg_SI );
-#endif
}
static struct x86_reg
@@ -2177,12 +2171,16 @@ tgsi_emit_sse2(
tgsi_parse_init( &parse, tokens );
- /* Can't just use EDI without save/restoring it:
+ /* Can't just use EDI, EBX without save/restoring them:
*/
x86_push(
func,
get_immediate_base() );
+ x86_push(
+ func,
+ get_temp_base() );
+
/*
* Different function args for vertex/fragment shaders:
@@ -2309,10 +2307,14 @@ tgsi_emit_sse2(
soa_to_aos( func, 9, 2, 10, 11 );
}
- /* Can't just use EDI without save/restoring it:
+ /* Can't just use EBX, EDI without save/restoring them:
*/
x86_pop(
func,
+ get_temp_base() );
+
+ x86_pop(
+ func,
get_immediate_base() );
#ifdef WIN32