TCE  1.20
BypassingBUBasicBlockScheduler.cc File Reference
#include <set>
#include <string>
#include "BypassingBUBasicBlockScheduler.hh"
#include "DataDependenceGraph.hh"
#include "SimpleResourceManager.hh"
#include "BUMoveNodeSelector.hh"
#include "ProgramOperation.hh"
#include "ControlUnit.hh"
#include "Machine.hh"
#include "BasicBlock.hh"
#include "LLVMTCECmdLineOptions.hh"
#include "InterPassData.hh"
#include "MoveNodeSet.hh"
#include "Terminal.hh"
#include "RegisterRenamer.hh"
#include "HWOperation.hh"
#include "MachineConnectivityCheck.hh"
#include "Operation.hh"
#include "TerminalRegister.hh"
#include "Move.hh"
#include "RegisterCopyAdder.hh"
#include "MoveGuard.hh"
#include "DisassemblyRegister.hh"
Include dependency graph for BypassingBUBasicBlockScheduler.cc:

Go to the source code of this file.

Detailed Description

Implementation of BypassingBUBasicBlockScheduler class.

This scheduler first schedules result reads of an operation, then it tries to bypass the operands, and recursively schedule the operations which produce the result, bypassing the operands while bypassing the results of the other operation. If it cannot schedule the operation producing the value of the operand, it reverts the bypass, and schedules operands from registers.

When the original/first scheduleOperation() call finishes, all operations and moves scheduled directly by it or recursively by it are "fixed in place", and can no longer be reverted. Then selector gives another operation or individual move to be scheduled.

The basic principle of this scheduler is greediness: "try the fastest way of doing things first, and if it succeeds, good, it not, revert to slower way of doing things. so 1) bypass 2) rename 3) add regcopies

The old BB scheduler does these in exactly opposite order( first addregcopies, then rename, then bypass).

Author
Heikki Kultala 2011-2012 (hkultala-no.spam-tut.fi)
Note
rating: red

Declaration of BypassingBUBasicBlockScheduler class.

This scheduler first schedules result reads of an operation, then it tries to bypass the operands, and recursively schedule the operations which produce the result, bypassing the operands while bypassing the results of the other operation. If it cannot schedule the operation producing the value of the operand, it reverts the bypass, and schedules operands from registers.

Author
Heikki Kultala 2011 (hkultala-no.spam-tut.fi)
Note
rating: red

Definition in file BypassingBUBasicBlockScheduler.cc.