r600g: added literals where needed for POW instruction

Fixes size calculation for the bytecode buffer.

Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Bas Nieuwenhuizen 2010-08-29 11:19:22 +02:00 committed by Dave Airlie
parent b3d41844c7
commit e77b1e777d

View 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);