diff options
author | Francisco Jerez <[email protected]> | 2016-03-12 18:50:24 -0800 |
---|---|---|
committer | Matt Turner <[email protected]> | 2020-03-06 10:20:32 -0800 |
commit | d966a6b4c4684bc02647a8fdc69a6c88e5ed00c2 (patch) | |
tree | d0d4da56e4b463bfb3ddb06a9150fbc4879cc2df /src/intel/compiler/brw_vec4.cpp | |
parent | 03eb46f4a74c8df3de6785ffe18e968b876469b8 (diff) |
intel/compiler: Introduce backend_shader method to propagate IR changes to analysis passes
The invalidate_analysis() method knows what analysis passes there are
in the back-end and calls their invalidate() method to report changes
in the IR. For the moment it just calls invalidate_live_intervals()
(which will eventually be fully replaced by this function) if anything
changed.
This makes all optimization passes invalidate DEPENDENCY_EVERYTHING,
which is clearly far from ideal -- The dependency classes passed to
invalidate_analysis() will be refined in a future commit.
Reviewed-by: Matt Turner <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4012>
Diffstat (limited to 'src/intel/compiler/brw_vec4.cpp')
-rw-r--r-- | src/intel/compiler/brw_vec4.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/intel/compiler/brw_vec4.cpp b/src/intel/compiler/brw_vec4.cpp index b6246d7742a..18676d4c4ca 100644 --- a/src/intel/compiler/brw_vec4.cpp +++ b/src/intel/compiler/brw_vec4.cpp @@ -496,7 +496,7 @@ vec4_visitor::opt_vector_float() } if (progress) - invalidate_live_intervals(); + invalidate_analysis(DEPENDENCY_EVERYTHING); return progress; } @@ -577,7 +577,7 @@ vec4_visitor::opt_reduce_swizzle() } if (progress) - invalidate_live_intervals(); + invalidate_analysis(DEPENDENCY_EVERYTHING); return progress; } @@ -904,7 +904,7 @@ vec4_visitor::opt_algebraic() } if (progress) - invalidate_live_intervals(); + invalidate_analysis(DEPENDENCY_EVERYTHING); return progress; } @@ -1474,7 +1474,7 @@ vec4_visitor::opt_register_coalesce() } if (progress) - invalidate_live_intervals(); + invalidate_analysis(DEPENDENCY_EVERYTHING); return progress; } @@ -1524,6 +1524,9 @@ vec4_visitor::eliminate_find_live_channel() } } + if (progress) + invalidate_analysis(DEPENDENCY_EVERYTHING); + return progress; } @@ -1598,7 +1601,7 @@ vec4_visitor::split_virtual_grfs() } } } - invalidate_live_intervals(); + invalidate_analysis(DEPENDENCY_EVERYTHING); } void @@ -1901,7 +1904,7 @@ vec4_visitor::lower_minmax() } if (progress) - invalidate_live_intervals(); + invalidate_analysis(DEPENDENCY_EVERYTHING); return progress; } @@ -2037,7 +2040,7 @@ vec4_visitor::fixup_3src_null_dest() } if (progress) - invalidate_live_intervals(); + invalidate_analysis(DEPENDENCY_EVERYTHING); } void @@ -2365,7 +2368,7 @@ vec4_visitor::lower_simd_width() } if (progress) - invalidate_live_intervals(); + invalidate_analysis(DEPENDENCY_EVERYTHING); return progress; } @@ -2522,7 +2525,7 @@ vec4_visitor::scalarize_df() } if (progress) - invalidate_live_intervals(); + invalidate_analysis(DEPENDENCY_EVERYTHING); return progress; } @@ -2565,7 +2568,7 @@ vec4_visitor::lower_64bit_mad_to_mul_add() } if (progress) - invalidate_live_intervals(); + invalidate_analysis(DEPENDENCY_EVERYTHING); return progress; } @@ -2662,6 +2665,12 @@ vec4_visitor::apply_logical_swizzle(struct brw_reg *hw_reg, } } +void +vec4_visitor::invalidate_analysis(brw::analysis_dependency_class c) +{ + backend_shader::invalidate_analysis(c); +} + bool vec4_visitor::run() { |