aboutsummaryrefslogtreecommitdiffstats
path: root/src/intel/compiler/brw_vec4.cpp
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2016-03-12 18:50:24 -0800
committerMatt Turner <[email protected]>2020-03-06 10:20:32 -0800
commitd966a6b4c4684bc02647a8fdc69a6c88e5ed00c2 (patch)
treed0d4da56e4b463bfb3ddb06a9150fbc4879cc2df /src/intel/compiler/brw_vec4.cpp
parent03eb46f4a74c8df3de6785ffe18e968b876469b8 (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.cpp29
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()
{