nv50: fix stupid thinko in emit_set
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Tue, 15 Sep 2009 13:24:32 +0000 (15:24 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Tue, 15 Sep 2009 13:37:10 +0000 (15:37 +0200)
When swapping sources 0 and 1, EQ of course does *not*
become NE, etc.

Introduced in 2b963f5c723401aa2646bd48eefe065cd335e280.

src/gallium/drivers/nv50/nv50_program.c

index d7bef1ebeeabb3b9c7e31717140a96ff0bf85560..eb90d5e66f9080f7017918a4e000856f272e3866 100644 (file)
@@ -854,12 +854,14 @@ static void
 emit_set(struct nv50_pc *pc, unsigned ccode, struct nv50_reg *dst, int wp,
         struct nv50_reg *src0, struct nv50_reg *src1)
 {
+       static const unsigned cc_swapped[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
+
        struct nv50_program_exec *e = exec(pc);
        struct nv50_reg *rdst;
 
        assert(ccode < 16);
        if (check_swap_src_0_1(pc, &src0, &src1))
-               ccode = ccode ^ 0x7;
+               ccode = cc_swapped[ccode & 7] | (ccode & 8);
 
        rdst = dst;
        if (dst && dst->type != P_TEMP)