[Mesa-dev] [PATCH 2/3] i965/fs: Pass cfg to calculate_live_intervals().
Pohjolainen, Topi
topi.pohjolainen at intel.com
Tue Jul 1 05:58:09 PDT 2014
On Mon, Jun 30, 2014 at 10:11:41AM -0700, Matt Turner wrote:
> We've often created the CFG immediately before, so use it when
> available.
> ---
> src/mesa/drivers/dri/i965/brw_fs.h | 2 +-
> src/mesa/drivers/dri/i965/brw_fs_cse.cpp | 3 +--
> src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp | 2 +-
> src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp | 12 ++++++++----
> src/mesa/drivers/dri/i965/brw_fs_live_variables.h | 4 ++--
> src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp | 4 ++--
> 6 files changed, 15 insertions(+), 12 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
> index 58e7175..961c56c 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.h
> +++ b/src/mesa/drivers/dri/i965/brw_fs.h
> @@ -373,7 +373,7 @@ public:
> void assign_constant_locations();
> void demote_pull_constants();
> void invalidate_live_intervals();
> - void calculate_live_intervals();
> + void calculate_live_intervals(const cfg_t *cfg = NULL);
Here in this patch quite a few calls are modified to pass a pointer explicitly,
were there some calls left without?
> void calculate_register_pressure();
> bool opt_algebraic();
> bool opt_cse();
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
> index 381c569..5727801 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
> @@ -317,9 +317,8 @@ fs_visitor::opt_cse()
> {
> bool progress = false;
>
> - calculate_live_intervals();
> -
> cfg_t cfg(&instructions);
> + calculate_live_intervals(&cfg);
>
> for (int b = 0; b < cfg.num_blocks; b++) {
> bblock_t *block = cfg.blocks[b];
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp b/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp
> index 7b2d4aa..d41a42c 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp
> @@ -41,7 +41,7 @@ fs_visitor::dead_code_eliminate()
>
> cfg_t cfg(&instructions);
>
> - calculate_live_intervals();
> + calculate_live_intervals(&cfg);
>
> int num_vars = live_intervals->num_vars;
> BITSET_WORD *live = ralloc_array(NULL, BITSET_WORD, BITSET_WORDS(num_vars));
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
> index 0973dc9..585dc3d 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
> @@ -243,7 +243,7 @@ fs_live_variables::var_from_reg(fs_reg *reg)
> return var_from_vgrf[reg->reg] + reg->reg_offset;
> }
>
> -fs_live_variables::fs_live_variables(fs_visitor *v, cfg_t *cfg)
> +fs_live_variables::fs_live_variables(fs_visitor *v, const cfg_t *cfg)
> : v(v), cfg(cfg)
> {
> mem_ctx = ralloc_context(NULL);
> @@ -304,7 +304,7 @@ fs_visitor::invalidate_live_intervals()
> * information about whole VGRFs.
> */
> void
> -fs_visitor::calculate_live_intervals()
> +fs_visitor::calculate_live_intervals(const cfg_t *cfg)
> {
> if (this->live_intervals)
> return;
> @@ -320,8 +320,12 @@ fs_visitor::calculate_live_intervals()
> virtual_grf_end[i] = -1;
> }
>
> - cfg_t cfg(&instructions);
> - this->live_intervals = new(mem_ctx) fs_live_variables(this, &cfg);
> + if (cfg) {
> + this->live_intervals = new(mem_ctx) fs_live_variables(this, cfg);
> + } else {
> + cfg_t cfg(&instructions);
> + this->live_intervals = new(mem_ctx) fs_live_variables(this, &cfg);
> + }
>
> /* Merge the per-component live ranges to whole VGRF live ranges. */
> for (int i = 0; i < live_intervals->num_vars; i++) {
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_live_variables.h b/src/mesa/drivers/dri/i965/brw_fs_live_variables.h
> index 5a7dd27..13c3eb4 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_live_variables.h
> +++ b/src/mesa/drivers/dri/i965/brw_fs_live_variables.h
> @@ -57,7 +57,7 @@ class fs_live_variables {
> public:
> DECLARE_RALLOC_CXX_OPERATORS(fs_live_variables)
>
> - fs_live_variables(fs_visitor *v, cfg_t *cfg);
> + fs_live_variables(fs_visitor *v, const cfg_t *cfg);
> ~fs_live_variables();
>
> bool vars_interfere(int a, int b);
> @@ -97,7 +97,7 @@ protected:
> void compute_start_end();
>
> fs_visitor *v;
> - cfg_t *cfg;
> + const cfg_t *cfg;
> void *mem_ctx;
>
> };
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp
> index 079eb2e..1287adb 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp
> @@ -93,10 +93,10 @@ fs_visitor::opt_saturate_propagation()
> {
> bool progress = false;
>
> - calculate_live_intervals();
> -
> cfg_t cfg(&instructions);
>
> + calculate_live_intervals(&cfg);
> +
> for (int b = 0; b < cfg.num_blocks; b++) {
> progress = opt_saturate_propagation_local(this, cfg.blocks[b])
> || progress;
> --
> 1.8.3.2
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list