r600g: added literals where needed for POW instruction
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sun, 29 Aug 2010 09:19:22 +0000 (11:19 +0200)
committerDave Airlie <airlied@redhat.com>
Sun, 29 Aug 2010 23:41:02 +0000 (09:41 +1000)
Fixes size calculation for the bytecode buffer.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/r600_shader.c

index ebcf19c12b197e3a37b0eb537c1cef20a832361a..bf5f28fd9c27b50490c0e8c990a8b3638360c0ed 100644 (file)
@@ -1069,6 +1069,9 @@ static int tgsi_pow(struct r600_shader_ctx *ctx)
        alu.dst.write = 1;
        alu.last = 1;
        r = r600_bc_add_alu(ctx->bc, &alu);
+       if (r)
+               return r;
+       r = r600_bc_add_literal(ctx->bc,ctx->value);
        if (r)
                return r;
        /* b * LOG2(a) */
@@ -1083,6 +1086,9 @@ static int tgsi_pow(struct r600_shader_ctx *ctx)
        alu.dst.write = 1;
        alu.last = 1;
        r = r600_bc_add_alu(ctx->bc, &alu);
+       if (r)
+               return r;
+       r = r600_bc_add_literal(ctx->bc,ctx->value);
        if (r)
                return r;
        /* POW(a,b) = EXP2(b * LOG2(a))*/
@@ -1093,6 +1099,9 @@ static int tgsi_pow(struct r600_shader_ctx *ctx)
        alu.dst.write = 1;
        alu.last = 1;
        r = r600_bc_add_alu(ctx->bc, &alu);
+       if (r)
+               return r;
+       r = r600_bc_add_literal(ctx->bc,ctx->value);
        if (r)
                return r;
        return tgsi_helper_tempx_replicate(ctx);