mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 10:20:09 +01:00
i965/fs: Extend SEL peephole to handle only matching MOVs.
Before this patch, the following code would not be optimized even though the first two instructions were common to the then and else blocks: (+f0) IF MOV dst0 ... MOV dst1 ... MOV dst2 ... ELSE MOV dst0 ... MOV dst1 ... MOV dst3 ... ENDIF This commit extends the peephole to handle this case. No shader-db changes. Reviewed-by: Paul Berry <stereotype441@gmail.com> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
13de9f03f1
commit
4532cac06a
1 changed files with 2 additions and 3 deletions
|
|
@ -147,7 +147,6 @@ fs_visitor::opt_peephole_sel()
|
|||
|
||||
fs_inst *else_mov[MAX_MOVS] = { NULL };
|
||||
fs_inst *then_mov[MAX_MOVS] = { NULL };
|
||||
bool malformed_mov_found = false;
|
||||
|
||||
int movs = count_movs_from_if(then_mov, else_mov, if_inst, else_inst);
|
||||
|
||||
|
|
@ -166,7 +165,7 @@ fs_visitor::opt_peephole_sel()
|
|||
if (!then_mov[i]->dst.equals(else_mov[i]->dst) ||
|
||||
then_mov[i]->is_partial_write() ||
|
||||
else_mov[i]->is_partial_write()) {
|
||||
malformed_mov_found = true;
|
||||
movs = i;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -193,7 +192,7 @@ fs_visitor::opt_peephole_sel()
|
|||
}
|
||||
}
|
||||
|
||||
if (malformed_mov_found)
|
||||
if (movs == 0)
|
||||
continue;
|
||||
|
||||
/* Emit a CMP if our IF used the embedded comparison */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue