freedreno/ir3: add input/output iterators
[mesa.git] / src / freedreno / ir3 / ir3_shader.c
index 0cfb28e1c495ad276a9b8f93861eba1672975021..2f5777c4ec86982f76f21170259bf8d586d6c927 100644 (file)
@@ -363,6 +363,8 @@ output_name(struct ir3_shader_variant *so, int i)
                        return "GS_HEADER";
                case VARYING_SLOT_GS_VERTEX_FLAGS_IR3:
                        return "GS_VERTEX_FLAGS";
+               case VARYING_SLOT_TCS_HEADER_IR3:
+                       return "TCS_HEADER";
                default:
                        return gl_varying_slot_name(so->outputs[i].slot);
                }
@@ -378,12 +380,9 @@ ir3_shader_disasm(struct ir3_shader_variant *so, uint32_t *bin, FILE *out)
        uint8_t regid;
        unsigned i;
 
-       for (i = 0; i < ir->ninputs; i++) {
-               if (!ir->inputs[i]) {
-                       fprintf(out, "; in%d unused\n", i);
-                       continue;
-               }
-               reg = ir->inputs[i]->regs[0];
+       struct ir3_instruction *instr;
+       foreach_input_n(instr, i, ir) {
+               reg = instr->regs[0];
                regid = reg->num;
                fprintf(out, "@in(%sr%d.%c)\tin%d\n",
                                (reg->flags & IR3_REG_HALF) ? "h" : "",
@@ -400,15 +399,8 @@ ir3_shader_disasm(struct ir3_shader_variant *so, uint32_t *bin, FILE *out)
                                fetch->wrmask, fetch->cmd);
        }
 
-       for (i = 0; i < ir->noutputs; i++) {
-               if (!ir->outputs[i]) {
-                       fprintf(out, "; out%d unused\n", i);
-                       continue;
-               }
-               /* kill shows up as a virtual output.. skip it! */
-               if (is_kill(ir->outputs[i]))
-                       continue;
-               reg = ir->outputs[i]->regs[0];
+       foreach_output_n(instr, i, ir) {
+               reg = instr->regs[0];
                regid = reg->num;
                fprintf(out, "@out(%sr%d.%c)\tout%d\n",
                                (reg->flags & IR3_REG_HALF) ? "h" : "",