diff options
| author | Keith Whitwell <keith@tungstengraphics.com> | 2008-05-27 17:45:54 +0100 | 
|---|---|---|
| committer | Keith Whitwell <keith@tungstengraphics.com> | 2008-05-27 17:52:24 +0100 | 
| commit | 2ec419d40dba43305c28fca9658ea00541f67821 (patch) | |
| tree | cb06a12c191625491d93ec0944f2d735e7957f80 /src/gallium | |
| parent | f8762ba5234fd1b44e11e76bb5f58d2305c90572 (diff) | |
draw: fix ABS aliasing bug
Diffstat (limited to 'src/gallium')
| -rw-r--r-- | src/gallium/auxiliary/draw/draw_vs_aos.c | 9 | 
1 files changed, 5 insertions, 4 deletions
| diff --git a/src/gallium/auxiliary/draw/draw_vs_aos.c b/src/gallium/auxiliary/draw/draw_vs_aos.c index e2e96470f7..1c63677e6e 100644 --- a/src/gallium/auxiliary/draw/draw_vs_aos.c +++ b/src/gallium/auxiliary/draw/draw_vs_aos.c @@ -964,12 +964,13 @@ static boolean emit_ABS( struct aos_compilation *cp, const struct tgsi_full_inst  {     struct x86_reg arg0 = fetch_src(cp, &op->FullSrcRegisters[0]);     struct x86_reg neg = aos_get_internal(cp, IMM_NEGS); -   struct x86_reg dst = get_xmm_writable(cp, arg0); +   struct x86_reg tmp = aos_get_xmm_reg(cp); -   sse_mulps(cp->func, dst, neg); -   sse_maxps(cp->func, dst, arg0); +   sse_movaps(cp->func, tmp, arg0); +   sse_mulps(cp->func, tmp, neg); +   sse_maxps(cp->func, tmp, arg0); -   store_dest(cp, &op->FullDstRegisters[0], dst); +   store_dest(cp, &op->FullDstRegisters[0], tmp);     return TRUE;  } | 
