33#ifndef TTA_BEM_GENERATOR_HH
34#define TTA_BEM_GENERATOR_HH
54 class BaseRegisterFile;
55 class OperationTriggeredFormat;
70 typedef std::map<const TTAMachine::Socket*, SocketCodeTable*>
SCTableMap;
72 typedef std::pair<unsigned int, unsigned int>
Encoding;
85 unsigned& amountOfR3RCustomOps)
const;
120 const std::multiset<int>& oppositeFieldWidths,
122 std::multiset<Encoding>& encodings);
124 std::multiset<Encoding>& encodings,
TTAMachine::Machine * machine
the architecture definition of the estimated processor
BinaryEncoding * generate()
const TTAMachine::Machine * machine_
The machine for which the BEM is generated.
void addSubfields(MoveSlot &slot) const
void addRiscvFormat(TTAMachine::OperationTriggeredFormat *format, BinaryEncoding &bem, unsigned &amountOfRCustomOps, unsigned &amountOfR3RCustomOps) const
static bool needsSocketCodeTable(const TTAMachine::Socket &socket)
static int socketCount(const TTAMachine::Bus &bus, TTAMachine::Socket::Direction direction)
std::multiset< int > socketCodeWidthsForBus(const TTAMachine::Bus &bus, TTAMachine::Socket::Direction socketDir) const
static void addExtraBits(std::multiset< Encoding > &encodings, int bitCount)
static TTAMachine::Socket & socket(int index, const TTAMachine::Bus &bus, TTAMachine::Socket::Direction direction)
void addPortCodes(SocketCodeTable &table, const TTAMachine::Socket &socket) const
SCTableMap scTableMap_
A map which tells which socket code table belongs to a socket.
static int requiredIndexWidth(const TTAMachine::BaseRegisterFile ®File)
static bool haveEqualConnections(const TTAMachine::Socket &socket1, const TTAMachine::Socket &socket2)
static void calculateEncodings(const std::multiset< int > &oppositeFieldWidths, bool leftAlignment, std::multiset< Encoding > &encodings)
void addSocketCodeTables(BinaryEncoding &bem)
void addEncodings(ImmediateControlField &field) const
void addTopLevelFields(BinaryEncoding &bem) const
static int sourceBridgeCount(const TTAMachine::Bus &bus)
static TTAMachine::Bridge & sourceBridge(int index, const TTAMachine::Bus &bus)
std::pair< unsigned int, unsigned int > Encoding
Typedef for encoding (first = encoding, second = extra bits).
std::map< const TTAMachine::Socket *, SocketCodeTable * > SCTableMap
Map type for storing Socket - SocketCodeTable pairs.
SocketCodeTable * socketCodeTable(const TTAMachine::Socket &socket) const
SocketCodeTable * suitableSocketCodeTable(const TTAMachine::Socket &socket) const
static bool hasUnconditionalGuard(const TTAMachine::Bus &bus)
void assignSocketCodeTable(const TTAMachine::Socket *socket, SocketCodeTable *table)
unsigned int maxLongImmSlotWidth(const MoveSlot &slot) const
void addLongImmDstRegisterFields(BinaryEncoding &bem) const