mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
i965/fs: Reject copy propagation into SEL if not min/max.
We shouldn't ever see a SEL with conditional mod other than GE (for max)
or L (for min), but we might see one with predication and no conditional
mod.
total instructions in shared programs: 8241806 -> 8241902 (0.00%)
instructions in affected programs: 13284 -> 13380 (0.72%)
HURT: 62
total cycles in shared programs: 84165104 -> 84166244 (0.00%)
cycles in affected programs: 75364 -> 76504 (1.51%)
helped: 10
HURT: 34
Fixes generated code in at least Sanctum 2, Borderlands 2, Goat
Simulator, XCOM: Enemy Unknown, and Shogun 2.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92234
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
(cherry picked from commit 7bed52bb5f)
This commit is contained in:
parent
eb9127d224
commit
0386f956b3
2 changed files with 12 additions and 1 deletions
|
|
@ -445,7 +445,9 @@ fs_visitor::try_copy_propagate(fs_inst *inst, int arg, acp_entry *entry)
|
|||
if (entry->saturate) {
|
||||
switch(inst->opcode) {
|
||||
case BRW_OPCODE_SEL:
|
||||
if (inst->src[1].file != IMM ||
|
||||
if ((inst->conditional_mod != BRW_CONDITIONAL_GE &&
|
||||
inst->conditional_mod != BRW_CONDITIONAL_L) ||
|
||||
inst->src[1].file != IMM ||
|
||||
inst->src[1].f < 0.0 ||
|
||||
inst->src[1].f > 1.0) {
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -163,6 +163,15 @@ TEST_F(copy_propagation_test, maxmax_sat_imm)
|
|||
{ BRW_CONDITIONAL_L , -1.5f, false },
|
||||
{ BRW_CONDITIONAL_GE , 1.5f, false },
|
||||
{ BRW_CONDITIONAL_L , 1.5f, false },
|
||||
|
||||
{ BRW_CONDITIONAL_NONE, 0.5f, false },
|
||||
{ BRW_CONDITIONAL_Z , 0.5f, false },
|
||||
{ BRW_CONDITIONAL_NZ , 0.5f, false },
|
||||
{ BRW_CONDITIONAL_G , 0.5f, false },
|
||||
{ BRW_CONDITIONAL_LE , 0.5f, false },
|
||||
{ BRW_CONDITIONAL_R , 0.5f, false },
|
||||
{ BRW_CONDITIONAL_O , 0.5f, false },
|
||||
{ BRW_CONDITIONAL_U , 0.5f, false },
|
||||
};
|
||||
|
||||
for (unsigned i = 0; i < sizeof(test) / sizeof(test[0]); i++) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue