summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi
diff options
context:
space:
mode:
authorTom Stellard <[email protected]>2013-03-07 10:51:25 -0500
committerTom Stellard <[email protected]>2013-04-05 18:43:34 -0400
commitc5e5b3401c52f83bd885497cb30125e78a21d666 (patch)
tree895fceb4d43d1d6d8e9427907bc081007a86d9fa /src/gallium/drivers/radeonsi
parent1a868acbecdd7b7cb71342a75a36ad9a80d8eb17 (diff)
gallium: PIPE_COMPUTE_CAP_IR_TARGET - allow drivers to specify a processor v2
This target string now contains four values instead of three. The old processor field (which was really being interpreted as arch) has been split into two fields: processor and arch. This allows drivers to pass a more a more detailed description of the hardware to compiler frontends. v2: - Adapt to libclc changes Reviewed-by: Francisco Jerez <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi')
-rw-r--r--src/gallium/drivers/radeonsi/radeonsi_pipe.c11
-rw-r--r--src/gallium/drivers/radeonsi/radeonsi_pipe.h1
-rw-r--r--src/gallium/drivers/radeonsi/radeonsi_shader.c4
3 files changed, 15 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.c b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
index 17d825b1d42..ce6fabba65c 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.c
@@ -274,6 +274,17 @@ static const char* r600_get_vendor(struct pipe_screen* pscreen)
return "X.Org";
}
+const char *r600_get_llvm_processor_name(enum radeon_family family)
+{
+ switch (family) {
+ case CHIP_TAHITI: return "tahiti";
+ case CHIP_PITCAIRN: return "pitcairn";
+ case CHIP_VERDE: return "verde";
+ case CHIP_OLAND: return "oland";
+ default: return "";
+ }
+}
+
static const char *r600_get_family_name(enum radeon_family family)
{
switch(family) {
diff --git a/src/gallium/drivers/radeonsi/radeonsi_pipe.h b/src/gallium/drivers/radeonsi/radeonsi_pipe.h
index 40a5c8c3d90..496741f3726 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_pipe.h
+++ b/src/gallium/drivers/radeonsi/radeonsi_pipe.h
@@ -218,6 +218,7 @@ void r600_upload_index_buffer(struct r600_context *rctx,
/* r600_pipe.c */
void radeonsi_flush(struct pipe_context *ctx, struct pipe_fence_handle **fence,
unsigned flags);
+const char *r600_get_llvm_processor_name(enum radeon_family family);
/* r600_query.c */
void r600_init_query_functions(struct r600_context *rctx);
diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c b/src/gallium/drivers/radeonsi/radeonsi_shader.c
index 5fdf46e7358..0db4555d59a 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_shader.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c
@@ -1165,7 +1165,9 @@ int si_pipe_shader_create(
if (dump) {
LLVMDumpModule(mod);
}
- radeon_llvm_compile(mod, &inst_bytes, &inst_byte_count, "SI", dump);
+ radeon_llvm_compile(mod, &inst_bytes, &inst_byte_count,
+ r600_get_llvm_processor_name(rctx->screen->family)
+ , dump);
if (dump) {
fprintf(stderr, "SI CODE:\n");
for (i = 0; i < inst_byte_count; i+=4 ) {