Mesa (master): aco: make validate() usable in tests

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jul 21 19:49:27 UTC 2020


Module: Mesa
Branch: master
Commit: bf4b377b9b9fa7152431f1efd6bcd15018bbd8f8
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=bf4b377b9b9fa7152431f1efd6bcd15018bbd8f8

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Thu Jan 30 11:49:20 2020 +0000

aco: make validate() usable in tests

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6013>

---

 src/amd/compiler/aco_interface.cpp | 17 +++++++++++++----
 src/amd/compiler/aco_ir.h          |  2 +-
 src/amd/compiler/aco_validate.cpp  |  7 ++-----
 3 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/amd/compiler/aco_interface.cpp b/src/amd/compiler/aco_interface.cpp
index 95e2bd1ac1a..a05df1e7959 100644
--- a/src/amd/compiler/aco_interface.cpp
+++ b/src/amd/compiler/aco_interface.cpp
@@ -45,6 +45,15 @@ static radv_compiler_statistic_info statistic_infos[] = {
    [aco::statistic_vgpr_presched] = {"Pre-Sched VGPRs", "VGPR usage before scheduling"},
 };
 
+static void validate(aco::Program *program)
+{
+   if (!(aco::debug_flags & aco::DEBUG_VALIDATE))
+      return;
+
+   bool is_valid = aco::validate(program, stderr);
+   assert(is_valid);
+}
+
 void aco_compile_shader(unsigned shader_count,
                         struct nir_shader *const *shaders,
                         struct radv_shader_binary **binary,
@@ -72,7 +81,7 @@ void aco_compile_shader(unsigned shader_count,
    /* Phi lowering */
    aco::lower_phis(program.get());
    aco::dominator_tree(program.get());
-   aco::validate(program.get(), stderr);
+   validate(program.get());
 
    /* Optimization */
    aco::value_numbering(program.get());
@@ -81,7 +90,7 @@ void aco_compile_shader(unsigned shader_count,
    /* cleanup and exec mask handling */
    aco::setup_reduce_temp(program.get());
    aco::insert_exec_mask(program.get());
-   aco::validate(program.get(), stderr);
+   validate(program.get());
 
    /* spilling and scheduling */
    aco::live live_vars = aco::live_var_analysis(program.get(), args->options);
@@ -89,7 +98,7 @@ void aco_compile_shader(unsigned shader_count,
    if (program->collect_statistics)
       aco::collect_presched_stats(program.get());
    aco::schedule_program(program.get(), live_vars);
-   aco::validate(program.get(), stderr);
+   validate(program.get());
 
    std::string llvm_ir;
    if (args->options->record_ir) {
@@ -119,7 +128,7 @@ void aco_compile_shader(unsigned shader_count,
       abort();
    }
 
-   aco::validate(program.get(), stderr);
+   validate(program.get());
 
    /* Lower to HW Instructions */
    aco::ssa_elimination(program.get());
diff --git a/src/amd/compiler/aco_ir.h b/src/amd/compiler/aco_ir.h
index 7cf5ab19911..6f2a4a46b91 100644
--- a/src/amd/compiler/aco_ir.h
+++ b/src/amd/compiler/aco_ir.h
@@ -1607,7 +1607,7 @@ void insert_NOPs(Program* program);
 unsigned emit_program(Program* program, std::vector<uint32_t>& code);
 void print_asm(Program *program, std::vector<uint32_t>& binary,
                unsigned exec_size, std::ostream& out);
-void validate(Program* program, FILE *output);
+bool validate(Program* program, FILE *output);
 bool validate_ra(Program* program, const struct radv_nir_compiler_options *options, FILE *output);
 #ifndef NDEBUG
 void perfwarn(bool cond, const char *msg, Instruction *instr=NULL);
diff --git a/src/amd/compiler/aco_validate.cpp b/src/amd/compiler/aco_validate.cpp
index 83457e54fdf..e532cdf241f 100644
--- a/src/amd/compiler/aco_validate.cpp
+++ b/src/amd/compiler/aco_validate.cpp
@@ -46,11 +46,8 @@ void perfwarn(bool cond, const char *msg, Instruction *instr)
 }
 #endif
 
-void validate(Program* program, FILE * output)
+bool validate(Program* program, FILE *output)
 {
-   if (!(debug_flags & DEBUG_VALIDATE))
-      return;
-
    bool is_valid = true;
    auto check = [&output, &is_valid](bool check, const char * msg, aco::Instruction * instr) -> void {
       if (!check) {
@@ -439,7 +436,7 @@ void validate(Program* program, FILE * output)
       }
    }
 
-   assert(is_valid);
+   return is_valid;
 }
 
 /* RA validation */



More information about the mesa-commit mailing list