Commit 27bf37ba authored by Jason Ekstrand's avatar Jason Ekstrand

nir/peephole_select: Allow uniform/input loads and load_const

Shader-db results on HSW:

total instructions in shared programs: 4174156 -> 4157291 (-0.40%)
instructions in affected programs:     145397 -> 128532 (-11.60%)
helped:                                383
HURT:                                  0
GAINED:                                20
LOST:                                  22

There are two more tests lost than gained.  However, comparing this with
GLSL IR vs. NIR results, the overall delta is reduced from 85/44
gained/lost on current master to 71/32 with this commit.  Therefore, I
think it's probably a boon since we are getting "closer" to where we were
Reviewed-by: Connor Abbott's avatarConnor Abbott <>
parent 1be862c0
......@@ -56,6 +56,31 @@ block_check_for_allowed_instrs(nir_block *block)
nir_foreach_instr(block, instr) {
switch (instr->type) {
case nir_instr_type_intrinsic: {
nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
switch (intrin->intrinsic) {
case nir_intrinsic_load_var:
switch (intrin->variables[0]->var->data.mode) {
case nir_var_shader_in:
case nir_var_uniform:
return false;
return false;
case nir_instr_type_load_const:
case nir_instr_type_alu: {
/* It must be a move operation */
nir_alu_instr *mov = nir_instr_as_alu(instr);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment