diff options
author | Marek Olšák <[email protected]> | 2016-07-01 16:25:01 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2016-07-13 19:46:16 +0200 |
commit | 785073ed0b094082445781e454312f4f5ddecda8 (patch) | |
tree | bf4939f6db3f7490a099844f1e3509f179443bcb | |
parent | 348b9a5b1c0e8a0e05ff940c1f4a10e67cdee073 (diff) |
radeonsi: replace !tbaa with !invariant.load
no change in generated code thanks to dereferenceable(n)
Reviewed-by: Nicolai Hähnle <[email protected]>
-rw-r--r-- | src/gallium/drivers/radeonsi/si_shader.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 22fcd931450..f16a4a9bacf 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -101,10 +101,9 @@ struct si_shader_context LLVMTargetMachineRef tm; + unsigned invariant_load_md_kind; unsigned range_md_kind; - unsigned tbaa_md_kind; unsigned uniform_md_kind; - LLVMValueRef tbaa_const_md; LLVMValueRef empty_md; LLVMValueRef const_buffers[SI_NUM_CONST_BUFFERS]; @@ -418,7 +417,7 @@ static LLVMValueRef build_indexed_load_const( LLVMValueRef base_ptr, LLVMValueRef index) { LLVMValueRef result = build_indexed_load(ctx, base_ptr, index, true); - LLVMSetMetadata(result, ctx->tbaa_md_kind, ctx->tbaa_const_md); + LLVMSetMetadata(result, ctx->invariant_load_md_kind, ctx->empty_md); return result; } @@ -5315,7 +5314,7 @@ static void si_create_function(struct si_shader_context *ctx, /* The combination of: * - ByVal * - dereferenceable - * - tbaa + * - invariant.load * allows the optimization passes to move loads and reduces * SGPR spilling significantly. */ @@ -5346,21 +5345,15 @@ static void si_create_function(struct si_shader_context *ctx, static void create_meta_data(struct si_shader_context *ctx) { struct gallivm_state *gallivm = ctx->radeon_bld.soa.bld_base.base.gallivm; - LLVMValueRef tbaa_const[3]; + ctx->invariant_load_md_kind = LLVMGetMDKindIDInContext(gallivm->context, + "invariant.load", 14); ctx->range_md_kind = LLVMGetMDKindIDInContext(gallivm->context, "range", 5); - ctx->tbaa_md_kind = LLVMGetMDKindIDInContext(gallivm->context, - "tbaa", 4); ctx->uniform_md_kind = LLVMGetMDKindIDInContext(gallivm->context, "amdgpu.uniform", 14); ctx->empty_md = LLVMMDNodeInContext(gallivm->context, NULL, 0); - - tbaa_const[0] = LLVMMDStringInContext(gallivm->context, "const", 5); - tbaa_const[1] = 0; - tbaa_const[2] = lp_build_const_int32(gallivm, 1); - ctx->tbaa_const_md = LLVMMDNodeInContext(gallivm->context, tbaa_const, 3); } static void declare_streamout_params(struct si_shader_context *ctx, |