Pipeline.xcc

Author: Benoit Dupont de Dinechin (Benoit.Dupont-de-Dinechin@st.com)

Copyright 2001 - 2007 STMicroelectronics

This program is free software; you can redistribute it and/or modify it under the terms of either (at your option): the GNU General Public License (GPL) version 2; the GNU Lesser General Public License (LGPL) version 2.1; any later version of these licences as published by the Free Software Foundation.

Array of Dependency Lists (ADL) as defined by Verbrugge (Sable TR No. 2002-5).

struct PipelineADL_;
PipelineADL_pretty— Pretty-print this PipelineADL.
bool
PipelineADL_pretty(PipelineADL this, FILE *file);
Pipeline— Pipeline scheduler (cycle-based)

When all predecessors of an Instruction are scheduled, the Instruction goes into a WAITING queue in order to become data-ready. Once data-ready, it is transferred to a RELEASED queue so the highest priority Instruction(s) are tried for scheduling first.

struct Pipeline_;
Pipeline_instructions— For use by Pipeline_FOREACH_Instruction.
const_InstructionStack
Pipeline_instructions(const_Pipeline this);
Pipeline_FOREACH_Instruction— Iterate this Pipeline Instruction(s).
#define Pipeline_FOREACH_Instruction(this, instruction) { \
  const_InstructionStack Pipeline_INSTRUCTIONS = Pipeline_instructions(this); \
  InstructionStack_FOREACH_Instruction(Pipeline_INSTRUCTIONS, instruction)
#define Pipeline_ENDEACH_Instruction \
  InstructionStack_ENDEACH_Instruction \
}
Pipeline_FORBACK_Instruction— Iterate this Pipeline Instruction(s).
#define Pipeline_FORBACK_Instruction(this, instruction) { \
  const_InstructionStack Pipeline_INSTRUCTIONS = Pipeline_instructions(this); \
  InstructionStack_FORBACK_Instruction(Pipeline_INSTRUCTIONS, instruction)
#define Pipeline_ENDBACK_Instruction \
  InstructionStack_ENDBACK_Instruction \
}
Pipeline_makeCritical— Compute Instruction critical path length.

Take advantage from the fact that Instruction(s) are entered in topological order.

void
Pipeline_makeCritical(Pipeline this);
Pipeline_schedule— Schedule this Pipeline Instruction(s) based on priorities.
void
Pipeline_schedule(Pipeline this);

Pipeline_pretty -- Pretty-print this Pipeline.

bool
Pipeline_pretty(Pipeline this, FILE *file);