freedreno/ir3: make input/output iterators declare cursor ptr
authorRob Clark <robdclark@chromium.org>
Sat, 16 May 2020 19:15:23 +0000 (12:15 -0700)
committerMarge Bot <eric+marge@anholt.net>
Tue, 19 May 2020 16:06:17 +0000 (16:06 +0000)
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5048>

src/freedreno/ir3/ir3.h
src/freedreno/ir3/ir3_a6xx.c
src/freedreno/ir3/ir3_compiler_nir.c
src/freedreno/ir3/ir3_cp.c
src/freedreno/ir3/ir3_dce.c
src/freedreno/ir3/ir3_group.c
src/freedreno/ir3/ir3_print.c
src/freedreno/ir3/ir3_ra.c
src/freedreno/ir3/ir3_shader.c

index 2ce37bccbac9c85b3b3aea7e50d7031b5ff9eafa..79a40a122932bb099e18ceca979b08b5faf2b4ec 100644 (file)
@@ -1120,15 +1120,17 @@ static inline bool __is_false_dep(struct ir3_instruction *instr, unsigned n)
 
 /* iterators for shader inputs: */
 #define foreach_input_n(__ininstr, __cnt, __ir) \
-       for (unsigned __cnt = 0; __cnt < (__ir)->inputs_count; __cnt++) \
-               if ((__ininstr = (__ir)->inputs[__cnt]))
+       for (struct ir3_instruction *__ininstr = (void *)~0; __ininstr; __ininstr = NULL) \
+               for (unsigned __cnt = 0; __cnt < (__ir)->inputs_count; __cnt++) \
+                       if ((__ininstr = (__ir)->inputs[__cnt]))
 #define foreach_input(__ininstr, __ir) \
        foreach_input_n(__ininstr, __i, __ir)
 
 /* iterators for shader outputs: */
 #define foreach_output_n(__outinstr, __cnt, __ir) \
-       for (unsigned __cnt = 0; __cnt < (__ir)->outputs_count; __cnt++) \
-               if ((__outinstr = (__ir)->outputs[__cnt]))
+       for (struct ir3_instruction *__outinstr = (void *)~0; __outinstr; __outinstr = NULL) \
+               for (unsigned __cnt = 0; __cnt < (__ir)->outputs_count; __cnt++) \
+                       if ((__outinstr = (__ir)->outputs[__cnt]))
 #define foreach_output(__outinstr, __ir) \
        foreach_output_n(__outinstr, __i, __ir)
 
index cef110d6f5c980d9d97004d56f864f82120829d2..6160a855771b7c78fca34998102c4540bf25e996 100644 (file)
@@ -460,7 +460,6 @@ ir3_a6xx_fixup_atomic_dests(struct ir3 *ir, struct ir3_shader_variant *so)
        }
 
        /* we also need to fixup shader outputs: */
-       struct ir3_instruction *out;
        foreach_output_n (out, n, ir) {
                if (is_atomic(out->opc) && (out->flags & IR3_INSTR_G)) {
                        ir->outputs[n] = get_atomic_dest_mov(out);
index e6a179dc40c6ecd854362c5c485445f3a7a1294c..b3e23db243ede0c4b6050481d1ed1dfe950a9536 100644 (file)
@@ -2963,7 +2963,7 @@ setup_input(struct ir3_context *ctx, nir_variable *in)
                        ctx->inputs[idx] = instr;
                }
        } else if (ctx->so->type == MESA_SHADER_VERTEX) {
-               struct ir3_instruction *input = NULL, *in;
+               struct ir3_instruction *input = NULL;
                struct ir3_instruction *components[4];
                unsigned mask = (1 << (ncomp + frac)) - 1;
 
@@ -3362,7 +3362,6 @@ fixup_binning_pass(struct ir3_context *ctx)
                        so->outputs[j] = so->outputs[i];
 
                        /* fixup outidx to point to new output table entry: */
-                       struct ir3_instruction *out;
                        foreach_output (out, ir) {
                                if (out->collect.outidx == i) {
                                        out->collect.outidx = j;
@@ -3638,7 +3637,7 @@ ir3_compile_shader_nir(struct ir3_compiler *compiler,
                ret = ir3_ra(so, precolor, ARRAY_SIZE(precolor));
        } else if (so->num_sampler_prefetch) {
                assert(so->type == MESA_SHADER_FRAGMENT);
-               struct ir3_instruction *instr, *precolor[2];
+               struct ir3_instruction *precolor[2];
                int idx = 0;
 
                foreach_input (instr, ir) {
@@ -3685,7 +3684,6 @@ ir3_compile_shader_nir(struct ir3_compiler *compiler,
        for (unsigned i = 0; i < so->outputs_count; i++)
                so->outputs[i].regid = INVALID_REG;
 
-       struct ir3_instruction *out;
        foreach_output (out, ir) {
                assert(out->opc == OPC_META_COLLECT);
                unsigned outidx = out->collect.outidx;
@@ -3694,7 +3692,6 @@ ir3_compile_shader_nir(struct ir3_compiler *compiler,
                so->outputs[outidx].half  = !!(out->regs[0]->flags & IR3_REG_HALF);
        }
 
-       struct ir3_instruction *in;
        foreach_input (in, ir) {
                assert(in->opc == OPC_META_INPUT);
                unsigned inidx = in->input.inidx;
index 7023b327150f8ad6b8e1bc536cb537643ea6f11a..a7ae834d18affec8a9788e1cca8cebefb239bb2f 100644 (file)
@@ -786,7 +786,6 @@ ir3_cp(struct ir3 *ir, struct ir3_shader_variant *so)
 
        ir3_clear_mark(ir);
 
-       struct ir3_instruction *out;
        foreach_output_n (out, n, ir) {
                instr_cp(&ctx, out);
                ir->outputs[n] = eliminate_output_mov(&ctx, out);
index b97b2190051f9e3a777e90f1590725c7fb4fa37d..92a5d87eed81812ed87693e7a3a230f07ea073e1 100644 (file)
@@ -118,7 +118,6 @@ find_and_remove_unused(struct ir3 *ir, struct ir3_shader_variant *so)
                }
        }
 
-       struct ir3_instruction *out;
        foreach_output (out, ir)
                instr_dce(out, false);
 
@@ -168,7 +167,6 @@ find_and_remove_unused(struct ir3 *ir, struct ir3_shader_variant *so)
        }
 
        /* cleanup unused inputs: */
-       struct ir3_instruction *in;
        foreach_input_n (in, n, ir)
                if (in->flags & IR3_INSTR_UNUSED)
                        ir->inputs[n] = NULL;
index 490c2216e66d42edf940f00f641d254718008f96..35f63b79b243dd5752f77e178086e798312baad0 100644 (file)
@@ -164,7 +164,6 @@ find_neighbors(struct ir3 *ir)
        bool progress = false;
        unsigned i;
 
-       struct ir3_instruction *out;
        foreach_output (out, ir)
                progress |= instr_find_neighbors(out);
 
index 034bcd8248e8e94776fdcc63149274397ad83ec1..9f2c7688b1c3f3ef6bce6e48db72d26d02249eda 100644 (file)
@@ -301,7 +301,7 @@ print_block(struct ir3_block *block, int lvl)
                unsigned i = 0;
                tab(lvl+1);
                printf("pred: ");
-               set_foreach(block->predecessors, entry) {
+               set_foreach (block->predecessors, entry) {
                        struct ir3_block *pred = (struct ir3_block *)entry->key;
                        if (i++)
                                printf(", ");
@@ -342,7 +342,6 @@ ir3_print(struct ir3 *ir)
        foreach_block (block, &ir->block_list)
                print_block(block, 0);
 
-       struct ir3_instruction *out;
        foreach_output_n (out, i, ir) {
                printf("out%d: ", i);
                print_instr(out, 0);
index cc05d0cac2420662c51cff853008cb7cf531891c..8196203848eea207fc409cda9df3d01a7db69db9 100644 (file)
@@ -1269,8 +1269,6 @@ ra_block_alloc(struct ir3_ra_ctx *ctx, struct ir3_block *block)
         * them in the first pass:
         */
        if (!ctx->scalar_pass) {
-               struct ir3_instruction *in, *out;
-
                foreach_input (in, ctx->ir) {
                        reg_assign(ctx, in->regs[0], in);
                }
index 18d9659eafe023e8e8f11d6db75230c9fc94e4d9..652129108bf8dc0d73503c6caa4cc293182e38df 100644 (file)
@@ -456,7 +456,6 @@ ir3_shader_disasm(struct ir3_shader_variant *so, uint32_t *bin, FILE *out)
        uint8_t regid;
        unsigned i;
 
-       struct ir3_instruction *instr;
        foreach_input_n (instr, i, ir) {
                reg = instr->regs[0];
                regid = reg->num;