35#ifndef TTA_CODE_COMPRESSOR_PLUGIN_HH 
   36#define TTA_CODE_COMPRESSOR_PLUGIN_HH 
   62    class ImmediateElement;
 
   76    class InstructionTemplate;
 
   99    void setPrograms(std::map<std::string, TPEF::Binary*>& programs);
 
  120        std::ostream& stream, 
TCEString entityStr) = 0;
 
  138    typedef std::map<std::string, TPEF::Binary*> 
TPEFMap;
 
  185    typedef std::map<const TTAProgram::Instruction*, unsigned int> 
 
  215        const std::string& slotName,
 
  243        unsigned int registerIndex);
 
  252        unsigned int elementIndex,
 
 
find Finds info of the inner loops in the program
 
void encodeMove(const MoveSlot &slot, const TTAProgram::Instruction &instruction, InstructionBitVector &bitVector) const
 
void setBEM(const BinaryEncoding &bem)
 
static void encodeFUTerminal(const SlotField &field, const TTAProgram::Terminal &terminal, BitVector &bitVector)
 
IndexTable indexTable_
A table of indexes used when encoding long immediates.
 
void setParameters(ParameterTable parameters)
 
InstructionBitVector * bemBits(const TTAProgram::Program &program)
 
void setPrograms(std::map< std::string, TPEF::Binary * > &programs)
 
int addressSpaceOffset_
The offset of the instruction memory (the address of the first instruction).
 
void addBitsForDstRegisterField(const LImmDstRegisterField &field, const TTAProgram::Instruction &instruction, BitVector &bitVector)
 
const TTAMachine::Machine * machine_
The machine.
 
void setImemWidth(int mau, int widthInMaus=1)
 
InstructionSet instructionsAtBeginningOfMAU_
Set of instructions that start at the beginning of MAU.
 
void addBitsForSourceField(const SourceField &srcField, const TTAProgram::Move &move, InstructionBitVector &bitVector) const
 
void setInstructionToStartAtBeginningOfMAU(const TTAProgram::Instruction &instruction)
 
std::map< const TTAProgram::Instruction *, unsigned int > InstructionAddressMap
Map type for addresses of instructions.
 
TPEFMap::const_iterator programElement(int index) const
 
void startNewProgram(const std::string &programName)
 
std::string instructionTemplate(const TTAProgram::Instruction &instruction) const
 
ImmediateSet immediatesToRelocate_
Set of (long) immediates that refer to an instruction.
 
virtual ~CodeCompressorPlugin()
 
int moveSlotWidth(int index) const
 
static void addBits(unsigned int number, int leftmostBit, int rightmostBit, BitVector &bitVector)
 
void addBitsForMoveSlot(const MoveSlot &slot, const TTAProgram::Instruction &instruction, InstructionBitVector &bitVector)
 
const TTAMachine::Machine & machine() const
 
static void addBitsForDestinationField(const DestinationField &dstField, const TTAProgram::Move &move, BitVector &bitVector)
 
void encodeLongImmediate(const std::string &slotName, int slotWidth, const TTAProgram::Instruction &instruction, BitVector &bitVector)
 
std::string indentation(int level)
 
void addInstruction(const TTAProgram::Instruction &instruction, InstructionBitVector *bits)
 
std::set< const TTAProgram::Instruction * > InstructionSet
Set type for Instructions.
 
static BitVector socketCodeBits(const SocketCodeTable &socketCodes, const PortCode &portCode, unsigned int registerIndex)
 
TTAProgram::Program & currentProgram() const
 
TPEF::Binary * currentTPEF_
The current TPEF.
 
virtual InstructionBitVector * compress(const std::string &program)=0
 
InstructionBitVector * programBits_
The bits of the program.
 
unsigned int memoryAddress(const TTAProgram::Instruction &instruction) const
 
std::string parameterValue(const std::string ¶mName) const
 
const BinaryEncoding & binaryEncoding() const
 
void setMachine(const TTAMachine::Machine &machine)
 
static void encodeRFTerminal(const SlotField &field, const TTAProgram::Terminal &terminal, BitVector &bitVector)
 
bool hasParameter(const std::string ¶mName) const
 
bool startsAtBeginningOfMAU(const TTAProgram::Instruction &instruction) const
 
bool allStartsAtBeginningOfMAU_
Tells whether all the instructions starts at the beginning of MAU.
 
std::set< const TTAProgram::Immediate * > ImmediateSet
Set type for Immediates.
 
static void encodeNOP(const MoveSlot &slot, BitVector &bitVector)
 
RelocMap relocMap_
Contains information to which instructions the immediates are referring to.
 
const BinaryEncoding * bem_
The binary encoding map.
 
int mau_
The size of the minimum addressable unit.
 
virtual void printDescription(std::ostream &stream)=0
 
TTAProgram::Immediate * programImmediate(const TPEF::ImmediateElement &immElem, const TTAProgram::Instruction &instruction) const
 
static void encodeIUTerminal(const SlotField &field, const TTAProgram::Terminal &terminal, BitVector &bitVector)
 
std::map< std::string, TPEF::Binary * > TPEFMap
Map type for handling programs.
 
ParameterTable parameters_
Parameters for the plugin.
 
void addBitsForImmediateSlot(const ImmediateSlotField &immSlot, const TTAProgram::Instruction &instruction, BitVector &bitVector)
 
TTAProgram::Program * currentPOM_
The current program in POM.
 
virtual void generateDecompressor(std::ostream &stream, TCEString entityStr)=0
 
InstructionAddressMap instructionAddresses_
Contains the addresses of instructions.
 
std::string currentProgram_
The current program.
 
int firstMoveSlotIndex() const
 
void encodeImmediateTerminal(const SourceField &field, const TTAProgram::Terminal &terminal, InstructionBitVector &bitVector) const
 
std::vector< Parameter > ParameterTable
Table for passing plugin parameters.
 
static void addBitsForGuardField(const GuardField &guardField, const TTAProgram::Move &move, BitVector &bitVector)
 
std::set< const TTAProgram::Terminal * > TerminalSet
Set type for Terminals.
 
int numberOfPrograms() const
 
static void encodeSlotField(const SlotField &field, const BitVector &componentIDBits, const BitVector &socketCodeBits, BitVector &BitVector)
 
InstructionBitVector * bemInstructionBits(const TTAProgram::Instruction &)
 
TPEFMap tpefPrograms_
Programs run in the machine.
 
void initializeRelocations()
 
void addBitsForICField(const ImmediateControlField &icField, const TTAProgram::Instruction &instruction, BitVector &bitVector) const
 
unsigned int nextAddressablePositionFrom(unsigned int position) const
 
TerminalSet terminalsToRelocate_
Set of (short) immediate terminals that refer to an instruction.
 
std::map< const TTAProgram::Immediate *, std::vector< IndexBound > > IndexTable
Map type that maps Immediates to a vector of indexes.
 
std::map< const TTAProgram::Immediate *, const TTAProgram::Instruction * > RelocMap
Map type that maps Immediates to the Instructions they are referring to.
 
InstructionBitVector * programBits() const
 
void setAllInstructionsToStartAtBeginningOfMAU()
 
int moveSlotCount() const
 
TTAProgram::Terminal * immediateTerminal(const TPEF::CodeSection &codeSection, unsigned int elementIndex, const TPEF::ImmediateElement &immElem, const TTAProgram::Instruction &instruction) const
 
std::string name
Name of the parameter.
 
std::string value
Value of the parameter.