From: Timothy Arceri Date: Sat, 7 Jul 2018 02:02:08 +0000 (+1000) Subject: nir: always attempt to find loop terminators X-Git-Tag: android-x86-8.1-r1~1222 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=fef6325e587173f2146a8aab75847144d2f802ff;p=android-x86%2Fexternal-mesa.git nir: always attempt to find loop terminators This will help later patches with unrolling loops that end with a break i.e. loops the always exit on their first interation. Reviewed-by: Jason Ekstrand --- diff --git a/src/compiler/nir/nir_loop_analyze.c b/src/compiler/nir/nir_loop_analyze.c index d564296aa67..5454b7691ba 100644 --- a/src/compiler/nir/nir_loop_analyze.c +++ b/src/compiler/nir/nir_loop_analyze.c @@ -717,13 +717,6 @@ get_loop_info(loop_info_state *state, nir_function_impl *impl) } } - /* Induction analysis needs invariance information so get that first */ - compute_invariance_information(state); - - /* We have invariance information so try to find induction variables */ - if (!compute_induction_information(state)) - return; - /* Try to find all simple terminators of the loop. If we can't find any, * or we find possible terminators that have side effects then bail. */ @@ -737,6 +730,13 @@ get_loop_info(loop_info_state *state, nir_function_impl *impl) return; } + /* Induction analysis needs invariance information so get that first */ + compute_invariance_information(state); + + /* We have invariance information so try to find induction variables */ + if (!compute_induction_information(state)) + return; + /* Run through each of the terminators and try to compute a trip-count */ find_trip_count(state);