|
CIRCT 23.0.0git
|
An Evaluator, which is constructed with an IR module and can instantiate Objects. More...
#include <Evaluator.h>

Public Types | |
| using | ActualParameters = SmallVectorImpl< std::shared_ptr< evaluator::EvaluatorValue > > * |
| using | ObjectKey = std::pair< Value, ActualParameters > |
Public Member Functions | |
| Evaluator (ModuleOp mod) | |
| Construct an Evaluator with an IR module. | |
| FailureOr< evaluator::EvaluatorValuePtr > | instantiate (StringAttr className, ArrayRef< EvaluatorValuePtr > actualParams) |
| Instantiate an Object with its class name and actual parameters. | |
| mlir::ModuleOp | getModule () |
| Get the Module this Evaluator is built from. | |
| FailureOr< evaluator::EvaluatorValuePtr > | getPartiallyEvaluatedValue (Type type, Location loc) |
Private Member Functions | |
| bool | isFullyEvaluated (Value value, ActualParameters key) |
| bool | isFullyEvaluated (ObjectKey key) |
| FailureOr< EvaluatorValuePtr > | getOrCreateValue (Value value, ActualParameters actualParams, Location loc) |
| FailureOr< EvaluatorValuePtr > | allocateObjectInstance (StringAttr clasName, ActualParameters actualParams) |
| FailureOr< EvaluatorValuePtr > | evaluateValue (Value value, ActualParameters actualParams, Location loc) |
| Evaluate a Value in a Class body according to the small expression grammar described in the rationale document. | |
| FailureOr< EvaluatorValuePtr > | evaluateParameter (BlockArgument formalParam, ActualParameters actualParams, Location loc) |
| Evaluator dispatch functions for the small expression grammar. | |
| FailureOr< EvaluatorValuePtr > | evaluateConstant (ConstantOp op, ActualParameters actualParams, Location loc) |
| Evaluator dispatch function for constants. | |
| FailureOr< EvaluatorValuePtr > | evaluateIntegerBinaryArithmetic (IntegerBinaryArithmeticOp op, ActualParameters actualParams, Location loc) |
| FailureOr< EvaluatorValuePtr > | evaluateObjectInstance (StringAttr className, ActualParameters actualParams, Location loc, ObjectKey instanceKey={}) |
| Instantiate an Object with its class name and actual parameters. | |
| FailureOr< EvaluatorValuePtr > | evaluateObjectInstance (ObjectOp op, ActualParameters actualParams) |
| Evaluator dispatch function for Object instances. | |
| FailureOr< EvaluatorValuePtr > | evaluateObjectField (ObjectFieldOp op, ActualParameters actualParams, Location loc) |
| Evaluator dispatch function for Object fields. | |
| FailureOr< EvaluatorValuePtr > | evaluateListCreate (ListCreateOp op, ActualParameters actualParams, Location loc) |
| Evaluator dispatch function for List creation. | |
| FailureOr< EvaluatorValuePtr > | evaluateListConcat (ListConcatOp op, ActualParameters actualParams, Location loc) |
| Evaluator dispatch function for List concatenation. | |
| FailureOr< EvaluatorValuePtr > | evaluateStringConcat (StringConcatOp op, ActualParameters actualParams, Location loc) |
| Evaluator dispatch function for String concatenation. | |
| FailureOr< evaluator::EvaluatorValuePtr > | evaluateBasePathCreate (FrozenBasePathCreateOp op, ActualParameters actualParams, Location loc) |
| FailureOr< evaluator::EvaluatorValuePtr > | evaluatePathCreate (FrozenPathCreateOp op, ActualParameters actualParams, Location loc) |
| FailureOr< evaluator::EvaluatorValuePtr > | evaluateEmptyPath (FrozenEmptyPathOp op, ActualParameters actualParams, Location loc) |
| FailureOr< evaluator::EvaluatorValuePtr > | evaluateUnknownValue (UnknownValueOp op, Location loc) |
| Evaluate an unknown value. | |
| FailureOr< evaluator::EvaluatorValuePtr > | createUnknownValue (Type type, Location loc) |
| Create an unknown value of the specified type. | |
| FailureOr< ActualParameters > | createParametersFromOperands (ValueRange range, ActualParameters actualParams, Location loc) |
| Evaluator dispatch function for Object instances. | |
Private Attributes | |
| SymbolTable | symbolTable |
| The symbol table for the IR module the Evaluator was constructed with. | |
| SmallVector< std::unique_ptr< SmallVector< std::shared_ptr< evaluator::EvaluatorValue > > > > | actualParametersBuffers |
| This uniquely stores vectors that represent parameters. | |
| std::queue< ObjectKey > | worklist |
| A worklist that tracks values which needs to be fully evaluated. | |
| DenseMap< ObjectKey, std::shared_ptr< evaluator::EvaluatorValue > > | objects |
| Evaluator value storage. | |
An Evaluator, which is constructed with an IR module and can instantiate Objects.
Further refinement is expected.
Definition at line 375 of file Evaluator.h.
| using circt::om::Evaluator::ActualParameters = SmallVectorImpl<std::shared_ptr<evaluator::EvaluatorValue> > * |
Definition at line 390 of file Evaluator.h.
| using circt::om::Evaluator::ObjectKey = std::pair<Value, ActualParameters> |
Definition at line 393 of file Evaluator.h.
| circt::om::Evaluator::Evaluator | ( | ModuleOp | mod | ) |
Construct an Evaluator with an IR module.
Definition at line 27 of file Evaluator.cpp.
|
private |
|
private |
Evaluator dispatch function for Object instances.
Definition at line 517 of file Evaluator.cpp.
|
private |
Create an unknown value of the specified type.
Definition at line 807 of file Evaluator.cpp.
|
private |
Definition at line 752 of file Evaluator.cpp.
|
private |
Evaluator dispatch function for constants.
Definition at line 423 of file Evaluator.cpp.
References circt::om::evaluator::AttributeValue::get.
|
private |
Definition at line 799 of file Evaluator.cpp.
|
private |
Definition at line 432 of file Evaluator.cpp.
References assert(), circt::om::evaluator::AttributeValue::get(), and circt::om::evaluator::AttributeValue::getAs().
|
private |
Evaluator dispatch function for List concatenation.
Definition at line 642 of file Evaluator.cpp.
References circt::om::evaluator::ListValue::getElements(), and circt::om::evaluator::EvaluatorValue::isFullyEvaluated().
|
private |
Evaluator dispatch function for List creation.
Definition at line 608 of file Evaluator.cpp.
|
private |
Evaluator dispatch function for Object fields.
Definition at line 553 of file Evaluator.cpp.
|
private |
Evaluator dispatch function for Object instances.
Definition at line 537 of file Evaluator.cpp.
|
private |
Instantiate an Object with its class name and actual parameters.
Definition at line 186 of file Evaluator.cpp.
|
private |
Evaluator dispatch functions for the small expression grammar.
Evaluator dispatch function for parameters.
Definition at line 414 of file Evaluator.cpp.
|
private |
Definition at line 776 of file Evaluator.cpp.
|
private |
Evaluator dispatch function for String concatenation.
Definition at line 696 of file Evaluator.cpp.
References assert(), circt::om::evaluator::AttributeValue::get(), and circt::om::evaluator::AttributeValue::getAs().
|
private |
Evaluate an unknown value.
Definition at line 852 of file Evaluator.cpp.
|
private |
Evaluate a Value in a Class body according to the small expression grammar described in the rationale document.
The actual parameters are the values supplied at the current instantiation of the Class being evaluated.
Definition at line 354 of file Evaluator.cpp.
| ModuleOp circt::om::Evaluator::getModule | ( | ) |
Get the Module this Evaluator is built from.
Definition at line 30 of file Evaluator.cpp.
|
private |
Definition at line 101 of file Evaluator.cpp.
References circt::om::evaluator::AttributeValue::get, and circt::om::evaluator::PathValue::getEmptyPath().
| FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::getPartiallyEvaluatedValue | ( | Type | type, |
| Location | loc | ||
| ) |
Definition at line 70 of file Evaluator.cpp.
References circt::om::evaluator::AttributeValue::get.
| FailureOr< std::shared_ptr< evaluator::EvaluatorValue > > circt::om::Evaluator::instantiate | ( | StringAttr | className, |
| ArrayRef< EvaluatorValuePtr > | actualParams | ||
| ) |
Instantiate an Object with its class name and actual parameters.
Definition at line 297 of file Evaluator.cpp.
Referenced by omEvaluatorInstantiate().
|
inlineprivate |
Definition at line 400 of file Evaluator.h.
References objects.
|
inlineprivate |
Definition at line 396 of file Evaluator.h.
References isFullyEvaluated().
Referenced by isFullyEvaluated().
|
private |
This uniquely stores vectors that represent parameters.
Definition at line 472 of file Evaluator.h.
|
private |
Evaluator value storage.
Return an evaluator value for the given instantiation context (a pair of Value and parameters).
Definition at line 479 of file Evaluator.h.
Referenced by isFullyEvaluated().
|
private |
The symbol table for the IR module the Evaluator was constructed with.
Used to look up class definitions.
Definition at line 467 of file Evaluator.h.
|
private |
A worklist that tracks values which needs to be fully evaluated.
Definition at line 475 of file Evaluator.h.