diff options
author | Nicolai Hähnle <[email protected]> | 2016-08-09 12:26:37 +0200 |
---|---|---|
committer | Nicolai Hähnle <[email protected]> | 2016-08-17 12:11:25 +0200 |
commit | c5798d631492063372eae63f665c791893c52325 (patch) | |
tree | a6ef05beda694cb1910998deb845ec4634c06f74 /src/gallium | |
parent | 41001ca4bdcb6effe9fd52f6d7db84084b8337a3 (diff) |
gallium/radeon: use lp_build_alloca_undef
Avoid building all those store 0 / store undef instruction pairs that
end up getting removed anyway.
Reviewed-by: Roland Scheidegger <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium')
-rw-r--r-- | src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c index 88c7b3c1d18..8076443f081 100644 --- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c +++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c @@ -502,15 +502,6 @@ static LLVMValueRef fetch_system_value(struct lp_build_tgsi_context *bld_base, return bitcast(bld_base, type, cval); } -static LLVMValueRef si_build_alloca_undef(struct gallivm_state *gallivm, - LLVMTypeRef type, - const char *name) -{ - LLVMValueRef ptr = lp_build_alloca(gallivm, type, name); - LLVMBuildStore(gallivm->builder, LLVMGetUndef(type), ptr); - return ptr; -} - static void emit_declaration(struct lp_build_tgsi_context *bld_base, const struct tgsi_full_declaration *decl) { @@ -524,7 +515,7 @@ static void emit_declaration(struct lp_build_tgsi_context *bld_base, for (idx = decl->Range.First; idx <= decl->Range.Last; idx++) { unsigned chan; for (chan = 0; chan < TGSI_NUM_CHANNELS; chan++) { - ctx->soa.addr[idx][chan] = si_build_alloca_undef( + ctx->soa.addr[idx][chan] = lp_build_alloca_undef( &ctx->gallivm, ctx->soa.bld_base.uint_bld.elem_type, ""); } @@ -588,7 +579,7 @@ static void emit_declaration(struct lp_build_tgsi_context *bld_base, first + i / 4, "xyzw"[i % 4]); #endif ctx->temps[first * TGSI_NUM_CHANNELS + i] = - si_build_alloca_undef(bld_base->base.gallivm, + lp_build_alloca_undef(bld_base->base.gallivm, bld_base->base.vec_type, name); } @@ -606,7 +597,7 @@ static void emit_declaration(struct lp_build_tgsi_context *bld_base, * a shader ever reads from a channel that * it never writes to. */ - ctx->undef_alloca = si_build_alloca_undef( + ctx->undef_alloca = lp_build_alloca_undef( bld_base->base.gallivm, bld_base->base.vec_type, "undef"); } @@ -655,7 +646,7 @@ static void emit_declaration(struct lp_build_tgsi_context *bld_base, unsigned chan; assert(idx < RADEON_LLVM_MAX_OUTPUTS); for (chan = 0; chan < TGSI_NUM_CHANNELS; chan++) { - ctx->soa.outputs[idx][chan] = si_build_alloca_undef( + ctx->soa.outputs[idx][chan] = lp_build_alloca_undef( &ctx->gallivm, ctx->soa.bld_base.base.elem_type, ""); } |