projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
nir/lower_io: Add a build_addr_for_var helper
[mesa.git]
/
src
/
compiler
/
nir
/
nir_metadata.c
diff --git
a/src/compiler/nir/nir_metadata.c
b/src/compiler/nir/nir_metadata.c
index 61aae73221eb2bf79d4422fa23abe0127c9d2a75..6122394d8b59c552affcb0642d44c94ccecdecdc 100644
(file)
--- a/
src/compiler/nir/nir_metadata.c
+++ b/
src/compiler/nir/nir_metadata.c
@@
-31,7
+31,7
@@
*/
void
*/
void
-nir_metadata_require(nir_function_impl *impl, nir_metadata required)
+nir_metadata_require(nir_function_impl *impl, nir_metadata required
, ...
)
{
#define NEEDS_UPDATE(X) ((required & ~impl->valid_metadata) & (X))
{
#define NEEDS_UPDATE(X) ((required & ~impl->valid_metadata) & (X))
@@
-41,6
+41,12
@@
nir_metadata_require(nir_function_impl *impl, nir_metadata required)
nir_calc_dominance_impl(impl);
if (NEEDS_UPDATE(nir_metadata_live_ssa_defs))
nir_live_ssa_defs_impl(impl);
nir_calc_dominance_impl(impl);
if (NEEDS_UPDATE(nir_metadata_live_ssa_defs))
nir_live_ssa_defs_impl(impl);
+ if (NEEDS_UPDATE(nir_metadata_loop_analysis)) {
+ va_list ap;
+ va_start(ap, required);
+ nir_loop_analyze_impl(impl, va_arg(ap, nir_variable_mode));
+ va_end(ap);
+ }
#undef NEEDS_UPDATE
#undef NEEDS_UPDATE
@@
-53,7
+59,16
@@
nir_metadata_preserve(nir_function_impl *impl, nir_metadata preserved)
impl->valid_metadata &= preserved;
}
impl->valid_metadata &= preserved;
}
-#ifdef DEBUG
+void
+nir_shader_preserve_all_metadata(nir_shader *shader)
+{
+ nir_foreach_function(function, shader) {
+ if (function->impl)
+ nir_metadata_preserve(function->impl, nir_metadata_all);
+ }
+}
+
+#ifndef NDEBUG
/**
* Make sure passes properly invalidate metadata (part 1).
*
/**
* Make sure passes properly invalidate metadata (part 1).
*
@@
-63,7
+78,7
@@
nir_metadata_preserve(nir_function_impl *impl, nir_metadata preserved)
void
nir_metadata_set_validation_flag(nir_shader *shader)
{
void
nir_metadata_set_validation_flag(nir_shader *shader)
{
- nir_foreach_function(
shader, function
) {
+ nir_foreach_function(
function, shader
) {
if (function->impl) {
function->impl->valid_metadata |= nir_metadata_not_properly_reset;
}
if (function->impl) {
function->impl->valid_metadata |= nir_metadata_not_properly_reset;
}
@@
-80,7
+95,7
@@
nir_metadata_set_validation_flag(nir_shader *shader)
void
nir_metadata_check_validation_flag(nir_shader *shader)
{
void
nir_metadata_check_validation_flag(nir_shader *shader)
{
- nir_foreach_function(
shader, function
) {
+ nir_foreach_function(
function, shader
) {
if (function->impl) {
assert(!(function->impl->valid_metadata &
nir_metadata_not_properly_reset));
if (function->impl) {
assert(!(function->impl->valid_metadata &
nir_metadata_not_properly_reset));