i965/fs: Don't emit unnecessary SEL instruction from emit_image_atomic().
authorFrancisco Jerez <currojerez@riseup.net>
Sun, 7 Feb 2016 02:43:45 +0000 (18:43 -0800)
committerFrancisco Jerez <currojerez@riseup.net>
Mon, 8 Feb 2016 23:43:05 +0000 (15:43 -0800)
The SEL instruction with predication mode NONE emitted when the atomic
operation doesn't need to be predicated is a no-op and might rely on
undocumented hardware behaviour.  Noticed by chance while looking at
the assembly output.

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_fs_surface_builder.cpp

index 45694ec..081dbad 100644 (file)
@@ -1122,7 +1122,7 @@ namespace brw {
                                               dims, rsize, op, pred);
 
          /* An unbound surface access should give zero as result. */
-         if (rsize)
+         if (rsize && pred)
             set_predicate(pred, bld.SEL(tmp, tmp, brw_imm_d(0)));
 
          return tmp;