r600g/llvm: Add support for cf_alu native encode

This commit is contained in:
Vincent Lejeune 2013-03-26 15:00:18 +01:00
parent bc0cc2944f
commit af38695f51
3 changed files with 16 additions and 1 deletions

View file

@ -106,7 +106,7 @@ void r600_bytecode_init(struct r600_bytecode *bc,
bc->msaa_texture_mode = msaa_texture_mode;
}
static int r600_bytecode_add_cf(struct r600_bytecode *bc)
int r600_bytecode_add_cf(struct r600_bytecode *bc)
{
struct r600_bytecode_cf *cf = r600_bytecode_cf();

View file

@ -227,6 +227,7 @@ int r600_bytecode_add_tex(struct r600_bytecode *bc,
int r600_bytecode_add_output(struct r600_bytecode *bc,
const struct r600_bytecode_output *output);
int r600_bytecode_build(struct r600_bytecode *bc);
int r600_bytecode_add_cf(struct r600_bytecode *bc);
int r600_bytecode_add_cfinst(struct r600_bytecode *bc,
unsigned op);
int r600_bytecode_add_alu_type(struct r600_bytecode *bc,

View file

@ -626,6 +626,20 @@ static void r600_bytecode_from_byte_stream(struct r600_shader_ctx *ctx,
bytes_read = r600_export_from_byte_stream(ctx, bytes,
bytes_read);
break;
case 6: {
int32_t word0 = i32_from_byte_stream(bytes, &bytes_read);
int32_t word1 = i32_from_byte_stream(bytes, &bytes_read);
r600_bytecode_add_cf(ctx->bc);
ctx->bc->cf_last->op = r600_isa_cf_by_opcode(ctx->bc->isa, 8/* CF_ALU*/, 1);
ctx->bc->cf_last->kcache[0].bank = G_SQ_CF_ALU_WORD0_KCACHE_BANK0(word0);
ctx->bc->cf_last->kcache[0].addr = G_SQ_CF_ALU_WORD1_KCACHE_ADDR0(word1);
ctx->bc->cf_last->kcache[0].mode = G_SQ_CF_ALU_WORD0_KCACHE_MODE0(word0);
ctx->bc->cf_last->kcache[1].bank = G_SQ_CF_ALU_WORD0_KCACHE_BANK1(word0);
ctx->bc->cf_last->kcache[1].addr = G_SQ_CF_ALU_WORD1_KCACHE_ADDR1(word1);
ctx->bc->cf_last->kcache[1].mode = G_SQ_CF_ALU_WORD1_KCACHE_MODE1(word1);
break;
}
default:
/* XXX: Error here */
break;