aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2018-02-25 00:33:28 +0100
committerMarek Olšák <[email protected]>2018-03-07 13:55:49 -0500
commit2c3f3651c4b871e4c9116fe3d8c2e447ae1d9141 (patch)
tree04346fff29a4c8527197e5bd8529dcf15f07f4a0
parentb3b6b00ac8b7cda04ebbad71f256a57071714cf5 (diff)
radeonsi: fix passing address32_hi to LLVM for high values
The old function treats high values as negative, which LLVM interprets as 0.
-rw-r--r--src/amd/common/ac_llvm_util.c4
-rw-r--r--src/amd/common/ac_llvm_util.h2
-rw-r--r--src/gallium/drivers/radeonsi/si_shader.c7
3 files changed, 8 insertions, 5 deletions
diff --git a/src/amd/common/ac_llvm_util.c b/src/amd/common/ac_llvm_util.c
index 3530bf088be..bb9e873af81 100644
--- a/src/amd/common/ac_llvm_util.c
+++ b/src/amd/common/ac_llvm_util.c
@@ -202,11 +202,11 @@ ac_dump_module(LLVMModuleRef module)
void
ac_llvm_add_target_dep_function_attr(LLVMValueRef F,
- const char *name, int value)
+ const char *name, unsigned value)
{
char str[16];
- snprintf(str, sizeof(str), "%i", value);
+ snprintf(str, sizeof(str), "0x%x", value);
LLVMAddTargetDependentFunctionAttr(F, name, str);
}
diff --git a/src/amd/common/ac_llvm_util.h b/src/amd/common/ac_llvm_util.h
index 5329bb1b702..9c6b89bf6c1 100644
--- a/src/amd/common/ac_llvm_util.h
+++ b/src/amd/common/ac_llvm_util.h
@@ -87,7 +87,7 @@ LLVMBuilderRef ac_create_builder(LLVMContextRef ctx,
void
ac_llvm_add_target_dep_function_attr(LLVMValueRef F,
- const char *name, int value);
+ const char *name, unsigned value);
static inline unsigned
ac_get_load_intr_attribs(bool can_speculate)
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index 2e57eca6e54..d95e69f81ad 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -4456,8 +4456,11 @@ static void si_create_function(struct si_shader_context *ctx,
*fninfo->assign[i] = LLVMGetParam(ctx->main_fn, i);
}
- si_llvm_add_attribute(ctx->main_fn, "amdgpu-32bit-address-high-bits",
- ctx->screen->info.address32_hi);
+ if (ctx->screen->info.address32_hi) {
+ ac_llvm_add_target_dep_function_attr(ctx->main_fn,
+ "amdgpu-32bit-address-high-bits",
+ ctx->screen->info.address32_hi);
+ }
if (max_workgroup_size) {
si_llvm_add_attribute(ctx->main_fn, "amdgpu-max-work-group-size",