summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600/r600_shader.c
diff options
context:
space:
mode:
authorVincent Lejeune <vljn@ovi.com>2013-03-26 15:00:18 +0100
committerVincent Lejeune <vljn@ovi.com>2013-04-01 23:43:27 +0200
commitaf38695f5105a2f766f3df393c3e42067c3706f2 (patch)
tree4f022b0e47bb3c9ed389236579084e714e189f60 /src/gallium/drivers/r600/r600_shader.c
parentbc0cc2944ff13549df8276b856acc79254c5db07 (diff)
r600g/llvm: Add support for cf_alu native encode
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.c')
-rw-r--r--src/gallium/drivers/r600/r600_shader.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c
index 1e2155939ed..c51773af5b2 100644
--- a/src/gallium/drivers/r600/r600_shader.c
+++ b/src/gallium/drivers/r600/r600_shader.c
@@ -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;