mc2lib
Public Member Functions | List of all members
mc2lib::codegen::NullOp< Backend, EvtState > Class Template Reference

#include <compiler.hpp>

Inheritance diagram for mc2lib::codegen::NullOp< Backend, EvtState >:
mc2lib::codegen::Op< Backend, EvtState > mc2lib::codegen::strong::ReadSequence

Public Member Functions

 NullOp (types::Pid pid)
 
bool EnableEmit (EvtState *evts) override
 
void InsertPo (typename Op< Backend, EvtState >::ThreadConstIt before, EvtState *evts) override
 
std::size_t Emit (types::InstPtr start, Backend *backend, EvtState *evts, void *code, std::size_t len) override
 
bool UpdateObs (types::InstPtr ip, int part, types::Addr addr, const types::WriteID *from_id, std::size_t size, EvtState *evts) override
 
const mc::EventLastEvent (const mc::Event *next_event, EvtState *evts) const override
 
const mc::EventFirstEvent (const mc::Event *prev_event, EvtState *evts) const override
 
- Public Member Functions inherited from mc2lib::codegen::Op< Backend, EvtState >
 Op (types::Pid pid)
 
virtual ~Op ()
 
virtual void AdvanceThread (ThreadItStack *it_stack) const
 
virtual Ptr Clone () const=0
 
virtual void Reset ()=0
 
virtual void InsertPo (ThreadConstIt before, EvtState *evts)=0
 
virtual void RegisterCallback (CallbackStack *callback_stack)
 
types::Pid pid () const
 
void set_pid (types::Pid pid)
 

Additional Inherited Members

- Public Types inherited from mc2lib::codegen::Op< Backend, EvtState >
typedef EvtState EvtState
 
typedef std::shared_ptr< OpPtr
 
typedef std::vector< PtrThread
 
typedef Thread::const_iterator ThreadIt
 
typedef std::unordered_map< types::Pid, ThreadThreads
 
typedef std::vector< std::pair< ThreadIt, ThreadIt > > ThreadItStack
 
typedef std::vector< const Op *> ThreadConst
 
typedef ThreadConst::const_iterator ThreadConstIt
 
typedef std::function< std::size_t(Op *, types::InstPtr, Backend *, EvtState *, void *, std::size_t)> Callback
 
typedef std::vector< CallbackCallbackStack
 

Constructor & Destructor Documentation

§ NullOp()

template<class Backend , class EvtState >
mc2lib::codegen::NullOp< Backend, EvtState >::NullOp ( types::Pid  pid)
inlineexplicit

Member Function Documentation

§ Emit()

template<class Backend , class EvtState >
std::size_t mc2lib::codegen::NullOp< Backend, EvtState >::Emit ( types::InstPtr  start,
Backend *  backend,
EvtState evts,
void *  code,
std::size_t  len 
)
inlineoverridevirtual

Emit machine code.

Parameters
startInstruction pointer to first instruction when executing.
[in,out]backendArchitecture backend.
[in,out]evtsPointer to EvtState instance of calling Compiler.
[out]codePointer to memory to be copied into.
lenMaximum lenth of code.
Returns
Size of emitted code.

Implements mc2lib::codegen::Op< Backend, EvtState >.

§ EnableEmit()

template<class Backend , class EvtState >
bool mc2lib::codegen::NullOp< Backend, EvtState >::EnableEmit ( EvtState evts)
inlineoverridevirtual

Prepares the operation for emit; common emit code.

Parameters
[in,out]evtsPointer to EvtState instance of calling Compiler.
Returns
true if can emit; false otherwise.

Implements mc2lib::codegen::Op< Backend, EvtState >.

§ FirstEvent()

template<class Backend , class EvtState >
const mc::Event* mc2lib::codegen::NullOp< Backend, EvtState >::FirstEvent ( const mc::Event prev_event,
EvtState evts 
) const
inlineoverridevirtual

Accessor for first event generated.

Parameters
prev_eventEvent before first in program order; nullptr if none exists.
[in,out]evtsPointer to EvtState instance maintained by Compiler.
Returns
First event in program-order; nullptr if none exists.

Implements mc2lib::codegen::Op< Backend, EvtState >.

§ InsertPo()

template<class Backend , class EvtState >
void mc2lib::codegen::NullOp< Backend, EvtState >::InsertPo ( typename Op< Backend, EvtState >::ThreadConstIt  before,
EvtState evts 
)
inlineoverride

§ LastEvent()

template<class Backend , class EvtState >
const mc::Event* mc2lib::codegen::NullOp< Backend, EvtState >::LastEvent ( const mc::Event next_event,
EvtState evts 
) const
inlineoverridevirtual

Accessor for last event generated. Also used to insert additional ordering based on passed next_event (e.g. fences).

Parameters
next_eventEvent after last in program order; nullptr if none exists.
[in,out]evtsPointer to EvtState instance maintained by Compiler.
Returns
Last event in program-order; nullptr if none exists.

Implements mc2lib::codegen::Op< Backend, EvtState >.

§ UpdateObs()

template<class Backend , class EvtState >
bool mc2lib::codegen::NullOp< Backend, EvtState >::UpdateObs ( types::InstPtr  ip,
int  part,
types::Addr  addr,
const types::WriteID from_id,
std::size_t  size,
EvtState evts 
)
inlineoverridevirtual

Updates dynamic observation for instruction's memory operation.

Parameters
ipInstruction pointer of instruction for which a value was observed.
partWhich part of an instruction; e.g., if an instruction generates multiple memory events, part can be used to denote which.
addrAddress for observed operation.
from_idPointer to observed memory (WriteIDs).
sizeTotal size of observed memory operations in from_id; implementation should assert expected size.
[in,out]evtsPointer to EvtState instance maintained by Compiler.
Returns
Success or not.

Implements mc2lib::codegen::Op< Backend, EvtState >.


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