diff options
author | Tom Stellard <[email protected]> | 2012-02-27 15:47:34 -0500 |
---|---|---|
committer | Tom Stellard <[email protected]> | 2012-05-02 09:39:09 -0400 |
commit | 6f50f939ef85bb058c1401b5dad8340aa4f96aec (patch) | |
tree | af4aff4953dd6f629f09535e2b5c9f89181f20cb /src/gallium/drivers/r600/r600_shader.c | |
parent | 94a6a363792e8cb57a9f15778a3f3440d5b754ab (diff) |
r600g: Add support for reading native instructions from the LLVM bytestream
Signed-off-by: Tom Stellard <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_shader.c')
-rw-r--r-- | src/gallium/drivers/r600/r600_shader.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index 5e22b35ba48..e6cb3fa2d49 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -405,6 +405,7 @@ static void r600_bytecode_from_byte_stream(struct r600_shader_ctx *ctx, unsigned char * bytes, unsigned num_bytes) { unsigned bytes_read = 0; + unsigned i, byte; while (bytes_read < num_bytes) { char inst_type = bytes[bytes_read++]; switch (inst_type) { @@ -420,6 +421,15 @@ static void r600_bytecode_from_byte_stream(struct r600_shader_ctx *ctx, bytes_read = r600_fc_from_byte_stream(ctx, bytes, bytes_read); break; + case 3: + r600_bytecode_add_cfinst(ctx->bc, CF_NATIVE); + for (i = 0; i < 2; i++) { + for (byte = 0 ; byte < 4; byte++) { + ctx->bc->cf_last->isa[i] |= + (bytes[bytes_read++] << (byte * 8)); + } + } + break; default: /* XXX: Error here */ break; |