panfrost/midgard: Enable integer constant inlining
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Wed, 15 May 2019 01:28:08 +0000 (01:28 +0000)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Thu, 16 May 2019 01:20:41 +0000 (01:20 +0000)
Midgard ALU features two types of constants: embedded constants (128-bit
chunk, zero/one per schedule bundle) and inline constants (16-bit
splattered into the op, second source if present). Inline constants are
much more efficient from a space and scheduling freedom standpoint, so
it's desirable to inline when possible. Now that integer ops are well
understood and in use, we enable inlining of integers constants in
addition to floats (which have been inlined since forever).

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
src/gallium/drivers/panfrost/midgard/midgard_compile.c

index 5354c0667e2ceeb0a7f02dd66ea7290d59cfdfb7..421a3343a71670cdce111d5edffb615b1b1e434b 100644 (file)
@@ -3134,11 +3134,7 @@ embedded_to_inline_constant(compiler_context *ctx)
                         /* Scale constant appropriately, if we can legally */
                         uint16_t scaled_constant = 0;
 
-                        /* XXX: Check legality */
                         if (midgard_is_integer_op(op)) {
-                                /* TODO: Inline integer */
-                                continue;
-
                                 unsigned int *iconstants = (unsigned int *) ins->constants;
                                 scaled_constant = (uint16_t) iconstants[component];