#include <CGRA/MRRG.h>
#include <CGRA/BitSetting.h>
#include <iosfwd>
#include <map>
#include <memory>
#include <set>
#include <string>
#include <unordered_map>
#include <utility>
#include <vector>
Go to the source code of this file.
|
enum | OpCode : signed char {
OpCode::NOP = -1,
OpCode::SEXT = 1,
OpCode::ZEXT,
OpCode::TRUNC,
OpCode::INPUT,
OpCode::INPUT_PRED,
OpCode::OUTPUT_PRED,
OpCode::OUTPUT,
OpCode::PHI,
OpCode::CONST,
OpCode::ADD,
OpCode::SUB,
OpCode::MUL,
OpCode::DIV,
OpCode::AND,
OpCode::OR,
OpCode::XOR,
OpCode::SHL,
OpCode::ASHR,
OpCode::LSHR,
OpCode::LOAD,
OpCode::STORE,
OpCode::GEP,
OpCode::ICMP,
OpCode::CMP,
OpCode::BR,
OpCode::SQRT,
OpCode::FADD,
OpCode::FMUL,
OpCode::FDIV,
OpCode::FP2INT,
OpCode::INT2FP,
OpCode::MULU_FULL_LO,
OpCode::MULU_HALF_LO,
OpCode::MULU_QUART_LO,
OpCode::MULU_FULL_HI,
OpCode::MULU_HALF_HI,
OpCode::MULU_QUART_HI,
OpCode::MULS_FULL_LO,
OpCode::MULS_HALF_LO,
OpCode::MULS_QUART_LO,
OpCode::MULS_FULL_HI,
OpCode::MULS_HALF_HI,
OpCode::MULS_QUART_HI,
OpCode::ADD_FULL,
OpCode::ADD_HALF,
OpCode::ADD_QUART,
OpCode::SELECT
} |
|
enum | EdgeKind { EdgeKind::kDataFlow,
EdgeKind::kAlias
} |
|
|
std::ostream & | operator<< (std::ostream &os, const OpGraphOpCode &opcode) |
|
const std::string & | to_string (const OpGraphOpCode &opcode) |
|
OpGraphOpCode | opcode_from_string (const std::string &s) |
|
std::istream & | operator>> (std::istream &is, OpGraphOpCode &opcode) |
|
auto | operator+ (const OpCode &oc) |
|
bool | verifyAndPrintReport (const OpGraph &opgraph, std::ostream &os, bool silent_on_no_errors, bool throw_if_errors) |
|
bool | analyzeOpgraphVerifyResults (std::ostream &os, const std::vector< OpGraph::VerifyMessage > &messages, const bool silent_on_no_errors) |
|
OpSchedule | computeASAP (const OpGraph &op_graph) |
|
OpSchedule | computeALAP (const OpGraph &op_graph, unsigned int max_cycles) |
|
OpGraphTransformResult | filter (const OpGraph &src, const std::set< OpGraph::OpDescriptor > &allowed_ops) |
|
std::set< OpGraph::OpDescriptor > | findNDownstreamOps (const OpGraph &opgraph, const std::vector< OpGraphOp * > &starting_points, const std::ptrdiff_t n_ops) |
|
std::ostream & | operator<< (std::ostream &os, const OpGraph::VerifyMessage::Type &vm_type) |
|
char | operator+ (const OpGraph::VerifyMessage::Type &vm_type) |
|
bool | operator< (const OpGraph::EdgeDescriptor &lhs, const OpGraph::EdgeDescriptor &rhs) |
|
bool | operator== (const OpGraph::EdgeDescriptor &lhs, const OpGraph::EdgeDescriptor &rhs) |
|
◆ OperandTag
◆ OpGraphOpCode
◆ EdgeKind
Enumerator |
---|
kDataFlow | |
kAlias | |
Definition at line 99 of file OpGraph.h.
◆ OpCode
Enumerator |
---|
NOP | |
SEXT | |
ZEXT | |
TRUNC | |
INPUT | |
INPUT_PRED | |
OUTPUT_PRED | |
OUTPUT | |
PHI | |
CONST | |
ADD | |
SUB | |
MUL | |
DIV | |
AND | |
OR | |
XOR | |
SHL | |
ASHR | |
LSHR | |
LOAD | |
STORE | |
GEP | |
ICMP | |
CMP | |
BR | |
SQRT | |
FADD | |
FMUL | |
FDIV | |
FP2INT | |
INT2FP | |
MULU_FULL_LO | |
MULU_HALF_LO | |
MULU_QUART_LO | |
MULU_FULL_HI | |
MULU_HALF_HI | |
MULU_QUART_HI | |
MULS_FULL_LO | |
MULS_HALF_LO | |
MULS_QUART_LO | |
MULS_FULL_HI | |
MULS_HALF_HI | |
MULS_QUART_HI | |
ADD_FULL | |
ADD_HALF | |
ADD_QUART | |
SELECT | |
Definition at line 29 of file OpGraph.h.
◆ analyzeOpgraphVerifyResults()
bool analyzeOpgraphVerifyResults |
( |
std::ostream & |
os, |
|
|
const std::vector< OpGraph::VerifyMessage > & |
messages, |
|
|
const bool |
silent_on_no_errors |
|
) |
| |
A helper for the verifyAndPrintReport function
Definition at line 800 of file OpGraph.cpp.
◆ computeALAP()
◆ computeASAP()
◆ filter()
Return a new graph with only the allowed_ops
present
Definition at line 1212 of file OpGraph.cpp.
◆ findNDownstreamOps()
Starting from starting_points
, does a fanout BFS to find at least the given number of ops, including the starting points. If this function must return an op to find enough ops, then it will return all ops at that distance from the starting points. This way, it is independent of OpGraph's implementation details.
Definition at line 1246 of file OpGraph.cpp.
◆ opcode_from_string()
◆ operator+() [1/2]
auto operator+ |
( |
const OpCode & |
oc | ) |
|
|
inline |
◆ operator+() [2/2]
◆ operator<()
◆ operator<<() [1/2]
◆ operator<<() [2/2]
std::ostream& operator<< |
( |
std::ostream & |
os, |
|
|
const OpGraphOpCode & |
opcode |
|
) |
| |
◆ operator==()
◆ operator>>()
std::istream& operator>> |
( |
std::istream & |
is, |
|
|
OpGraphOpCode & |
opcode |
|
) |
| |
◆ to_string()
◆ verifyAndPrintReport()
bool verifyAndPrintReport |
( |
const OpGraph & |
opgraph, |
|
|
std::ostream & |
os, |
|
|
bool |
silent_on_no_errors, |
|
|
bool |
throw_if_errors |
|
) |
| |
A routine for verifying the OpGraph. Prints out a success message, unless told not to. Can throw if errors are found. Returns true if no errors found
Definition at line 790 of file OpGraph.cpp.