CIRCT 24.0.0git
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
circt::om::Evaluator Class Reference

An Evaluator, which is constructed with an IR module and can instantiate Objects. More...

#include <Evaluator.h>

Collaboration diagram for circt::om::Evaluator:
Collaboration graph
[legend]

Classes

struct  DebugNesting
 RAII helper to increment/decrement debugNesting. More...
 

Public Types

using ActualParameters = ArrayRef< EvaluatorValuePtr >
 

Public Member Functions

 Evaluator (ModuleOp mod)
 Construct an Evaluator with an IR module.
 
FailureOr< evaluator::EvaluatorValuePtrinstantiate (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::EvaluatorValuePtrgetPartiallyEvaluatedValue (Type type, Location loc)
 

Private Member Functions

FailureOr< evaluator::EvaluatorValuePtrinstantiateImpl (StringAttr className, ArrayRef< EvaluatorValuePtr > actualParams)
 
FailureOr< EvaluatorValuePtrgetOrCreateValue (Value value, ActualParameters actualParams, Location loc)
 
FailureOr< EvaluatorValuePtrevaluateValue (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< EvaluatorValuePtrevaluateParameter (BlockArgument formalParam, ActualParameters actualParams, Location loc)
 Evaluator dispatch functions for the small expression grammar.
 
FailureOr< EvaluatorValuePtrevaluateConstant (ConstantOp op, ActualParameters actualParams, Location loc)
 Evaluator dispatch function for constants.
 
FailureOr< EvaluatorValuePtrevaluateObjectInstance (StringAttr className, ActualParameters actualParams, Location loc)
 Instantiate an Object with its class name and actual parameters.
 
FailureOr< EvaluatorValuePtrevaluateElaboratedObject (ElaboratedObjectOp op, ActualParameters actualParams, Location loc)
 
FailureOr< EvaluatorValuePtrevaluateListCreate (ListCreateOp op, ActualParameters actualParams, Location loc)
 Evaluator dispatch function for List creation.
 
FailureOr< EvaluatorValuePtrevaluateListConcat (ListConcatOp op, ActualParameters actualParams, Location loc)
 Evaluator dispatch function for List concatenation.
 
FailureOr< evaluator::EvaluatorValuePtrevaluateBasePathCreate (FrozenBasePathCreateOp op, ActualParameters actualParams, Location loc)
 
FailureOr< evaluator::EvaluatorValuePtrevaluatePathCreate (FrozenPathCreateOp op, ActualParameters actualParams, Location loc)
 
FailureOr< evaluator::EvaluatorValuePtrevaluateEmptyPath (FrozenEmptyPathOp op, ActualParameters actualParams, Location loc)
 
FailureOr< evaluator::EvaluatorValuePtrevaluateUnknownValue (UnknownValueOp op, Location loc)
 Evaluate an unknown value.
 
FailureOr< evaluator::EvaluatorValuePtrcreateUnknownValue (Type type, Location loc)
 Create an unknown value of the specified type.
 
raw_ostream & dbgs (unsigned extra=0)
 
llvm::indent indent (unsigned extra=0)
 

Private Attributes

SymbolTable symbolTable
 The symbol table for the IR module the Evaluator was constructed with.
 
DenseMap< Value, std::shared_ptr< evaluator::EvaluatorValue > > objects
 Evaluator value storage for the current instantiation.
 
unsigned debugNesting = 0
 Current nesting depth for debug output indentation.
 

Detailed Description

An Evaluator, which is constructed with an IR module and can instantiate Objects.

Further refinement is expected.

Definition at line 300 of file Evaluator.h.

Member Typedef Documentation

◆ ActualParameters

Definition at line 315 of file Evaluator.h.

Constructor & Destructor Documentation

◆ Evaluator()

circt::om::Evaluator::Evaluator ( ModuleOp  mod)

Construct an Evaluator with an IR module.

Definition at line 317 of file Evaluator.cpp.

Member Function Documentation

◆ createUnknownValue()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::createUnknownValue ( Type  type,
Location  loc 
)
private

Create an unknown value of the specified type.

Definition at line 847 of file Evaluator.cpp.

◆ dbgs()

raw_ostream & circt::om::Evaluator::dbgs ( unsigned  extra = 0)
inlineprivate

Definition at line 384 of file Evaluator.h.

References debugNesting.

◆ evaluateBasePathCreate()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluateBasePathCreate ( FrozenBasePathCreateOp  op,
ActualParameters  actualParams,
Location  loc 
)
private

Definition at line 792 of file Evaluator.cpp.

◆ evaluateConstant()

FailureOr< circt::om::evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluateConstant ( ConstantOp  op,
ActualParameters  actualParams,
Location  loc 
)
private

Evaluator dispatch function for constants.

Definition at line 669 of file Evaluator.cpp.

References circt::om::evaluator::AttributeValue::get.

◆ evaluateElaboratedObject()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluateElaboratedObject ( ElaboratedObjectOp  op,
ActualParameters  actualParams,
Location  loc 
)
private

Definition at line 677 of file Evaluator.cpp.

◆ evaluateEmptyPath()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluateEmptyPath ( FrozenEmptyPathOp  op,
ActualParameters  actualParams,
Location  loc 
)
private

Definition at line 839 of file Evaluator.cpp.

◆ evaluateListConcat()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluateListConcat ( ListConcatOp  op,
ActualParameters  actualParams,
Location  loc 
)
private

Evaluator dispatch function for List concatenation.

Definition at line 753 of file Evaluator.cpp.

◆ evaluateListCreate()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluateListCreate ( ListCreateOp  op,
ActualParameters  actualParams,
Location  loc 
)
private

Evaluator dispatch function for List creation.

Definition at line 719 of file Evaluator.cpp.

◆ evaluateObjectInstance()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluateObjectInstance ( StringAttr  className,
ActualParameters  actualParams,
Location  loc 
)
private

Instantiate an Object with its class name and actual parameters.

Definition at line 448 of file Evaluator.cpp.

References assert(), and context.

◆ evaluateParameter()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluateParameter ( BlockArgument  formalParam,
ActualParameters  actualParams,
Location  loc 
)
private

Evaluator dispatch functions for the small expression grammar.

Evaluator dispatch function for parameters.

Definition at line 660 of file Evaluator.cpp.

◆ evaluatePathCreate()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluatePathCreate ( FrozenPathCreateOp  op,
ActualParameters  actualParams,
Location  loc 
)
private

Definition at line 816 of file Evaluator.cpp.

◆ evaluateUnknownValue()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluateUnknownValue ( UnknownValueOp  op,
Location  loc 
)
private

Evaluate an unknown value.

Definition at line 892 of file Evaluator.cpp.

◆ evaluateValue()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::evaluateValue ( Value  value,
ActualParameters  actualParams,
Location  loc 
)
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 605 of file Evaluator.cpp.

◆ getModule()

ModuleOp circt::om::Evaluator::getModule ( )

Get the Module this Evaluator is built from.

Definition at line 320 of file Evaluator.cpp.

◆ getOrCreateValue()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::getOrCreateValue ( Value  value,
ActualParameters  actualParams,
Location  loc 
)
private

Definition at line 380 of file Evaluator.cpp.

References circt::om::evaluator::PathValue::getEmptyPath().

◆ getPartiallyEvaluatedValue()

FailureOr< evaluator::EvaluatorValuePtr > circt::om::Evaluator::getPartiallyEvaluatedValue ( Type  type,
Location  loc 
)

Definition at line 346 of file Evaluator.cpp.

References circt::om::evaluator::AttributeValue::get.

◆ indent()

llvm::indent circt::om::Evaluator::indent ( unsigned  extra = 0)
inlineprivate

Definition at line 388 of file Evaluator.h.

References debugNesting.

◆ instantiate()

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 538 of file Evaluator.cpp.

Referenced by omEvaluatorInstantiate().

◆ instantiateImpl()

FailureOr< std::shared_ptr< evaluator::EvaluatorValue > > circt::om::Evaluator::instantiateImpl ( StringAttr  className,
ArrayRef< EvaluatorValuePtr actualParams 
)
private

Definition at line 574 of file Evaluator.cpp.

Member Data Documentation

◆ debugNesting

unsigned circt::om::Evaluator::debugNesting = 0
private

Current nesting depth for debug output indentation.

Definition at line 375 of file Evaluator.h.

Referenced by dbgs(), and indent().

◆ objects

DenseMap<Value, std::shared_ptr<evaluator::EvaluatorValue> > circt::om::Evaluator::objects
private

Evaluator value storage for the current instantiation.

Definition at line 371 of file Evaluator.h.

◆ symbolTable

SymbolTable circt::om::Evaluator::symbolTable
private

The symbol table for the IR module the Evaluator was constructed with.

Used to look up class definitions.

Definition at line 368 of file Evaluator.h.


The documentation for this class was generated from the following files: