From: Tom Stellard Date: Sun, 5 Sep 2010 02:10:23 +0000 (-0700) Subject: r300/compiler: Clean up rc_pair_alloc_source() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=598e220f9581db750cf212c59275d25fda810fe1;p=mesa.git r300/compiler: Clean up rc_pair_alloc_source() --- diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c index 5a50584b725..c31efdb0590 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c @@ -45,23 +45,16 @@ int rc_pair_alloc_source(struct rc_pair_instruction *pair, if ((!rgb && !alpha) || file == RC_FILE_NONE) return 0; - if (rgb && pair->RGB.Src[RC_PAIR_PRESUB_SRC].Used) { - if (file == RC_FILE_PRESUB) { - if (index != pair->RGB.Src[RC_PAIR_PRESUB_SRC].Index) { + /* Make sure only one presubtract operation is used per instruction. */ + if (file == RC_FILE_PRESUB) { + if (rgb && pair->RGB.Src[RC_PAIR_PRESUB_SRC].Used + && index != pair->RGB.Src[RC_PAIR_PRESUB_SRC].Index) { return -1; - } - } else { - rgb_used++; } - } - if (alpha && pair->Alpha.Src[RC_PAIR_PRESUB_SRC].Used) { - if (file == RC_FILE_PRESUB) { - if (index != pair->Alpha.Src[RC_PAIR_PRESUB_SRC].Index) { + if (alpha && pair->Alpha.Src[RC_PAIR_PRESUB_SRC].Used + && index != pair->Alpha.Src[RC_PAIR_PRESUB_SRC].Index) { return -1; - } - } else { - alpha_used++; } } @@ -92,17 +85,16 @@ int rc_pair_alloc_source(struct rc_pair_instruction *pair, candidate = i; } } - if (candidate < 0 || (rgb && rgb_used > 2) || (alpha && alpha_used > 2)) + + if (file == RC_FILE_PRESUB) { + candidate = RC_PAIR_PRESUB_SRC; + } else if (candidate < 0 || (rgb && rgb_used > 2) + || (alpha && alpha_used > 2)) { return -1; + } /* candidate >= 0 */ - /* Even if we have a presub src, the above loop needs to run, - * because we still need to make sure there is a free source. - */ - if (file == RC_FILE_PRESUB) - candidate = RC_PAIR_PRESUB_SRC; - if (rgb) { pair->RGB.Src[candidate].Used = 1; pair->RGB.Src[candidate].File = file;