nir/opt_sink: Sink frag coord instructions
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 20 Aug 2023 16:55:02 +0000 (12:55 -0400)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Mon, 18 Sep 2023 12:38:16 +0000 (08:38 -0400)
load_input-like. ubershaders:

   instructions in affected programs: 72392 -> 72522 (0.18%)
   helped: 8
   HURT: 18
   Inconclusive result (value mean confidence interval includes 0).

   total bytes in shared programs: 1468550 -> 1469170 (0.04%)
   bytes in affected programs: 560486 -> 561106 (0.11%)
   helped: 10
   HURT: 17
   Inconclusive result (value mean confidence interval includes 0).

   total halfregs in shared programs: 13946 -> 13898 (-0.34%)
   halfregs in affected programs: 3642 -> 3594 (-1.32%)
   helped: 21
   HURT: 0
   Halfregs are helped.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24833>

src/compiler/nir/nir_opt_sink.c

index e19ad09..4ff4e1f 100644 (file)
@@ -62,6 +62,9 @@ nir_can_move_instr(nir_instr *instr, nir_move_options options)
       case nir_intrinsic_load_input:
       case nir_intrinsic_load_interpolated_input:
       case nir_intrinsic_load_per_vertex_input:
+      case nir_intrinsic_load_frag_coord:
+      case nir_intrinsic_load_frag_coord_zw:
+      case nir_intrinsic_load_pixel_coord:
          return options & nir_move_load_input;
       case nir_intrinsic_load_uniform:
          return options & nir_move_load_uniform;