diff options
author | Michal Krol <michal@ubuntu-vbox.(none)> | 2008-05-02 16:12:55 +0200 |
---|---|---|
committer | Michal Krol <michal@ubuntu-vbox.(none)> | 2008-05-02 16:12:55 +0200 |
commit | 6c15a70b75b1625b69790f98f2f44e9ae4435f6a (patch) | |
tree | a6a010315f09fa67e4017a9296f36359f99391cd /src/gallium/auxiliary/tgsi | |
parent | 17058e07469f2dc5b47b4f820bd5a31b7ed9177c (diff) |
tgsi: Enable fast high precision rsqrt.
Diffstat (limited to 'src/gallium/auxiliary/tgsi')
-rwxr-xr-x | src/gallium/auxiliary/tgsi/exec/tgsi_sse2.c | 22 |
1 files changed, 0 insertions, 22 deletions
diff --git a/src/gallium/auxiliary/tgsi/exec/tgsi_sse2.c b/src/gallium/auxiliary/tgsi/exec/tgsi_sse2.c index dbf002130bb..b6b05944be7 100755 --- a/src/gallium/auxiliary/tgsi/exec/tgsi_sse2.c +++ b/src/gallium/auxiliary/tgsi/exec/tgsi_sse2.c @@ -761,20 +761,6 @@ emit_rcp ( make_xmm( xmm_src ) ); } -#if HIGH_PRECISION -static void XSTDCALL -rsqrt4f( - float *store ) -{ - const unsigned X = 0; - - store[X + 0] = 1.0F / sqrtf( store[X + 0] ); - store[X + 1] = 1.0F / sqrtf( store[X + 1] ); - store[X + 2] = 1.0F / sqrtf( store[X + 2] ); - store[X + 3] = 1.0F / sqrtf( store[X + 3] ); -} -#endif - static void emit_rsqrt( struct x86_function *func, @@ -782,13 +768,6 @@ emit_rsqrt( unsigned xmm_src ) { #if HIGH_PRECISION -#if 1 - emit_func_call_dst_src( - func, - xmm_dst, - xmm_src, - rsqrt4f ); -#else /* Although rsqrtps() and rcpps() are low precision on some/all SSE * implementations, it is possible to improve its precision at * fairly low cost, using a newton/raphson step, as below: @@ -817,7 +796,6 @@ emit_rsqrt( sse_subps( func, tmp0, src );
sse_mulps( func, dst, tmp0 );
} -#endif #else /* On Intel CPUs at least, this is only accurate to 12 bits -- not * good enough. |