nv50: fix emit_add_a16 to emit correct source reg
authorTrevor Davenport <trevor.davenport@gmail.com>
Fri, 27 May 2011 08:25:40 +0000 (10:25 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Fri, 27 May 2011 08:25:40 +0000 (10:25 +0200)
emit_add_a16 was using the incorrect source.
This caused adds in the form of:

   add u16 $a0 s32 $a1 u32 0x00000200

to have a source AREG of $a0 instead of $a1.

Fixes World of Warcraft in OpenGL and D3D without GLSL.

src/gallium/drivers/nv50/nv50_pc_emit.c

index 252c58dd8fffca8f6f88736ebc0e76a5c7a9768b..600850da011cc13519603d6263e6728a97e3fc5a 100644 (file)
@@ -744,8 +744,8 @@ emit_add_a16(struct nv_pc *pc, struct nv_instruction *i)
 
    set_pred(pc, i);
 
-   if (i->src[1])
-      set_a16_bits(pc, SREG(i->src[1])->id + 1);
+   if (s && i->src[0])
+      set_a16_bits(pc, SREG(i->src[0])->id);
 }
 
 static void