intel/compiler: Pass backend_shader * to cfg_t()
authorMatt Turner <mattst88@gmail.com>
Fri, 6 Mar 2020 21:34:13 +0000 (13:34 -0800)
committerMarge Bot <eric+marge@anholt.net>
Mon, 9 Mar 2020 04:44:12 +0000 (04:44 +0000)
As you can see, not having a pointer to the backend_shader from within
the class makes for some weird looking code.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4093>

src/intel/compiler/brw_cfg.cpp
src/intel/compiler/brw_cfg.h
src/intel/compiler/brw_shader.cpp
src/intel/compiler/test_fs_cmod_propagation.cpp
src/intel/compiler/test_fs_copy_propagation.cpp
src/intel/compiler/test_fs_saturate_propagation.cpp
src/intel/compiler/test_fs_scoreboard.cpp

index e476ea3621748091eb898ac4c9970c5b4e143024..0fd411b1b9484a5953b9b76633f6b592e3eac6e6 100644 (file)
@@ -154,8 +154,10 @@ bblock_t::combine_with(bblock_t *that)
 }
 
 void
-bblock_t::dump(backend_shader *s) const
+bblock_t::dump() const
 {
+   const backend_shader *s = this->cfg->s;
+
    int ip = this->start_ip;
    foreach_inst_in_block(backend_instruction, inst, this) {
       fprintf(stderr, "%5d: ", ip);
@@ -164,7 +166,8 @@ bblock_t::dump(backend_shader *s) const
    }
 }
 
-cfg_t::cfg_t(exec_list *instructions)
+cfg_t::cfg_t(const backend_shader *s, exec_list *instructions) :
+   s(s)
 {
    mem_ctx = ralloc_context(NULL);
    block_list.make_empty();
@@ -499,7 +502,7 @@ cfg_t::make_block_array()
 }
 
 void
-cfg_t::dump(backend_shader *s)
+cfg_t::dump()
 {
    const idom_tree *idom = (s ? &s->idom_analysis.require() : NULL);
 
@@ -517,7 +520,7 @@ cfg_t::dump(backend_shader *s)
       }
       fprintf(stderr, "\n");
       if (s != NULL)
-         block->dump(s);
+         block->dump();
       fprintf(stderr, "END B%d", block->num);
       foreach_list_typed(bblock_link, link, link, &block->children) {
          fprintf(stderr, " %c>B%d",
index 404a49c28b7cd41ed8f8fc714870e360477bd584..c747805817d730bce45c4587c516a3e5ad8ba4e8 100644 (file)
@@ -90,7 +90,7 @@ struct bblock_t {
                         enum bblock_link_kind kind) const;
    bool can_combine_with(const bblock_t *that) const;
    void combine_with(bblock_t *that);
-   void dump(backend_shader *s) const;
+   void dump() const;
 
    backend_instruction *start();
    const backend_instruction *start() const;
@@ -305,7 +305,7 @@ struct cfg_t {
 #ifdef __cplusplus
    DECLARE_RALLOC_CXX_OPERATORS(cfg_t)
 
-   cfg_t(exec_list *instructions);
+   cfg_t(const backend_shader *s, exec_list *instructions);
    ~cfg_t();
 
    void remove_block(bblock_t *block);
@@ -314,9 +314,10 @@ struct cfg_t {
    void set_next_block(bblock_t **cur, bblock_t *block, int ip);
    void make_block_array();
 
-   void dump(backend_shader *s);
+   void dump();
    void dump_cfg();
 #endif
+   const struct backend_shader *s;
    void *mem_ctx;
 
    /** Ordered list (by ip) of basic blocks */
index 475f9f04f8d7ea3b2f46592f9ae5068b6dafc811..3ce680cec6f717f61e481682fb8275415f3484ec 100644 (file)
@@ -1242,7 +1242,7 @@ backend_shader::calculate_cfg()
 {
    if (this->cfg)
       return;
-   cfg = new(mem_ctx) cfg_t(&this->instructions);
+   cfg = new(mem_ctx) cfg_t(this, &this->instructions);
 }
 
 void
index d05c689719665642fbf9dc44d43de2392b6a39a3..1fa2da2b619d3a2e00b4addc6ac68a682a977ff3 100644 (file)
@@ -94,14 +94,14 @@ cmod_propagation(fs_visitor *v)
 
    if (print) {
       fprintf(stderr, "= Before =\n");
-      v->cfg->dump(v);
+      v->cfg->dump();
    }
 
    bool ret = v->opt_cmod_propagation();
 
    if (print) {
       fprintf(stderr, "\n= After =\n");
-      v->cfg->dump(v);
+      v->cfg->dump();
    }
 
    return ret;
index fff85c2933b150556e749ccc37d97fba4a052ade..db08a3482dc6450009c4ce1c86743ef494863e90 100644 (file)
@@ -84,14 +84,14 @@ copy_propagation(fs_visitor *v)
 
    if (print) {
       fprintf(stderr, "= Before =\n");
-      v->cfg->dump(v);
+      v->cfg->dump();
    }
 
    bool ret = v->opt_copy_propagation();
 
    if (print) {
       fprintf(stderr, "\n= After =\n");
-      v->cfg->dump(v);
+      v->cfg->dump();
    }
 
    return ret;
index e0f96abb10d5add436800e15615d44ff0384fa9b..df8f5cc1eb66290115d0d237812f843b024762ab 100644 (file)
@@ -84,14 +84,14 @@ saturate_propagation(fs_visitor *v)
 
    if (print) {
       fprintf(stderr, "= Before =\n");
-      v->cfg->dump(v);
+      v->cfg->dump();
    }
 
    bool ret = v->opt_saturate_propagation();
 
    if (print) {
       fprintf(stderr, "\n= After =\n");
-      v->cfg->dump(v);
+      v->cfg->dump();
    }
 
    return ret;
index 4c6acfaf2019deb2db6763b6de48db9bcbb8dacd..71733c8d295f53f3a5e365dce6ed01d6565107af 100644 (file)
@@ -73,14 +73,14 @@ lower_scoreboard(fs_visitor *v)
 
    if (print) {
       fprintf(stderr, "= Before =\n");
-      v->cfg->dump(v);
+      v->cfg->dump();
    }
 
    v->lower_scoreboard();
 
    if (print) {
       fprintf(stderr, "\n= After =\n");
-      v->cfg->dump(v);
+      v->cfg->dump();
    }
 }