pan/midgard: Add post-schedule iteration helpers
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 27 Aug 2019 21:26:27 +0000 (14:26 -0700)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Fri, 30 Aug 2019 22:50:24 +0000 (15:50 -0700)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/panfrost/midgard/compiler.h

index 084eddee5cb3c415f61ac06d1cf27ec4cced5aa2..e6b90e4aa48afad00a12bd9c0cee36b56159162e 100644 (file)
@@ -363,6 +363,17 @@ mir_next_op(struct midgard_instruction *ins)
 #define mir_foreach_bundle_in_block(block, v) \
         util_dynarray_foreach(&block->bundles, midgard_bundle, v)
 
+#define mir_foreach_bundle_in_block_rev(block, v) \
+        util_dynarray_foreach_reverse(&block->bundles, midgard_bundle, v)
+
+#define mir_foreach_instr_in_block_scheduled_rev(block, v) \
+        midgard_instruction* v; \
+        signed i = 0; \
+        mir_foreach_bundle_in_block_rev(block, _bundle) \
+                for (i = (_bundle->instruction_count - 1), v = _bundle->instructions[i]; \
+                                i >= 0; \
+                                --i, v = _bundle->instructions[i]) \
+
 #define mir_foreach_instr_global(ctx, v) \
         mir_foreach_block(ctx, v_block) \
                 mir_foreach_instr_in_block(v_block, v)