projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
intel/ir: Remove scheduling-based cycle count estimates.
[mesa.git]
/
src
/
intel
/
compiler
/
brw_fs_saturate_propagation.cpp
diff --git
a/src/intel/compiler/brw_fs_saturate_propagation.cpp
b/src/intel/compiler/brw_fs_saturate_propagation.cpp
index d6cfa79a618fa2499541d8cf1c0ff57d6861bb3d..50c3fc19f3beedba8dab8dded8973751a02c49e6 100644
(file)
--- a/
src/intel/compiler/brw_fs_saturate_propagation.cpp
+++ b/
src/intel/compiler/brw_fs_saturate_propagation.cpp
@@
-25,6
+25,8
@@
#include "brw_fs_live_variables.h"
#include "brw_cfg.h"
#include "brw_fs_live_variables.h"
#include "brw_cfg.h"
+using namespace brw;
+
/** @file brw_fs_saturate_propagation.cpp
*
* Implements a pass that propagates the SAT modifier from a MOV.SAT into the
/** @file brw_fs_saturate_propagation.cpp
*
* Implements a pass that propagates the SAT modifier from a MOV.SAT into the
@@
-43,7
+45,7
@@
*/
static bool
*/
static bool
-opt_saturate_propagation_local(
fs_visitor *v
, bblock_t *block)
+opt_saturate_propagation_local(
const fs_live_variables &live
, bblock_t *block)
{
bool progress = false;
int ip = block->end_ip + 1;
{
bool progress = false;
int ip = block->end_ip + 1;
@@
-59,12
+61,13
@@
opt_saturate_propagation_local(fs_visitor *v, bblock_t *block)
inst->src[0].abs)
continue;
inst->src[0].abs)
continue;
- int src_var =
v->live_intervals->
var_from_reg(inst->src[0]);
- int src_end_ip =
v->live_intervals->
end[src_var];
+ int src_var =
live.
var_from_reg(inst->src[0]);
+ int src_end_ip =
live.
end[src_var];
bool interfered = false;
foreach_inst_in_block_reverse_starting_from(fs_inst, scan_inst, inst) {
bool interfered = false;
foreach_inst_in_block_reverse_starting_from(fs_inst, scan_inst, inst) {
- if (regions_overlap(scan_inst->dst, scan_inst->size_written,
+ if (scan_inst->exec_size == inst->exec_size &&
+ regions_overlap(scan_inst->dst, scan_inst->size_written,
inst->src[0], inst->size_read(0))) {
if (scan_inst->is_partial_write() ||
(scan_inst->dst.type != inst->dst.type &&
inst->src[0], inst->size_read(0))) {
if (scan_inst->is_partial_write() ||
(scan_inst->dst.type != inst->dst.type &&
@@
-148,12
+151,11
@@
opt_saturate_propagation_local(fs_visitor *v, bblock_t *block)
bool
fs_visitor::opt_saturate_propagation()
{
bool
fs_visitor::opt_saturate_propagation()
{
+ const fs_live_variables &live = live_analysis.require();
bool progress = false;
bool progress = false;
- calculate_live_intervals();
-
foreach_block (block, cfg) {
foreach_block (block, cfg) {
- progress = opt_saturate_propagation_local(
this
, block) || progress;
+ progress = opt_saturate_propagation_local(
live
, block) || progress;
}
/* Live intervals are still valid. */
}
/* Live intervals are still valid. */