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);