From: Brian Paul Date: Wed, 21 Jul 2010 14:18:56 +0000 (-0600) Subject: gallivm: re-org, comments for get_temp_ptr() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=695814a15b4d64e1fa829d51f18c4089837929c3;p=mesa.git gallivm: re-org, comments for get_temp_ptr() --- diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index 994bc537ce8..4e640f5903c 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -405,6 +405,15 @@ static void lp_exec_mask_endsub(struct lp_exec_mask *mask, int *pc) lp_exec_mask_update(mask); } + +/** + * Return pointer to a temporary register channel (src or dest). + * \param index which temporary register + * \param chan which channel of the temp register. + * \param is_indirect if true, add 'addr' to the index + * \param addr indirect addressing offset (should already have been + * multiplied by four). + */ static LLVMValueRef get_temp_ptr(struct lp_build_tgsi_soa_context *bld, unsigned index, @@ -413,15 +422,16 @@ get_temp_ptr(struct lp_build_tgsi_soa_context *bld, LLVMValueRef addr) { assert(chan < 4); - if (!bld->has_indirect_addressing) { - return bld->temps[index][chan]; - } else { + if (bld->has_indirect_addressing) { LLVMValueRef lindex = LLVMConstInt(LLVMInt32Type(), index * 4 + chan, 0); if (is_indirect) lindex = lp_build_add(&bld->base, lindex, addr); return LLVMBuildGEP(bld->base.builder, bld->temps_array, &lindex, 1, ""); } + else { + return bld->temps[index][chan]; + } }