Otawa
0.10
|
The MUST problem provides the abstract interpretation of L1 data cache for the MUST case. More...
#include <otawa/dcache/ACSBuilder.h>
Classes | |
class | Domain |
Public Member Functions | |
MUSTProblem (int _size, int _set, WorkSpace *_fw, const hard::Cache *_cache, int _A) | |
Build a MUST problem. More... | |
const Domain & | bottom (void) const |
const Domain & | entry (void) const |
void | lub (Domain &a, const Domain &b) const |
void | assign (Domain &a, const Domain &b) const |
void | assign (Domain &a, const ACS &b) const |
bool | equals (const Domain &a, const Domain &b) const |
void | update (Domain &out, const Domain &in, BasicBlock *bb) |
void | update (Domain &s, const BlockAccess &access) |
Update for an access. More... | |
void | purge (Domain &out, const BlockAccess &acc) |
Perform a purge according to the given block access. More... | |
void | enterContext (Domain &dom, BasicBlock *header, util::hai_context_t ctx) |
void | leaveContext (Domain &dom, BasicBlock *header, util::hai_context_t ctx) |
Public Attributes | |
Domain | callstate |
Private Attributes | |
WorkSpace * | fw |
int | set |
const hard::Cache * | cache |
Domain | bot |
Domain | ent |
int | size |
The MUST problem provides the abstract interpretation of L1 data cache for the MUST case.
It implements the concept AbstractDomain.
MUSTProblem::MUSTProblem | ( | int | _size, |
int | _set, | ||
WorkSpace * | _fw, | ||
const hard::Cache * | _cache, | ||
int | _A | ||
) |
Build a MUST problem.
_size | Number of blocks. |
_set | Number of sets in the cache. |
_fw | Current workspace. |
_cache | Analyzed cache. |
_A | Associativity of the cache. |
References otawa::dcache::ACS::empty(), and ent.
const MUSTProblem::Domain & MUSTProblem::bottom | ( | void | ) | const |
References bot.
Referenced by otawa::dcache::MUSTPERS::MUSTPERS().
|
inline |
Referenced by otawa::dcache::MUSTPERS::enterContext().
const MUSTProblem::Domain & MUSTProblem::entry | ( | void | ) | const |
References ent.
Referenced by otawa::dcache::MUSTPERS::MUSTPERS().
References otawa::dcache::ACS::equals().
Referenced by otawa::dcache::MUSTPERS::equals().
|
inline |
Referenced by otawa::dcache::MUSTPERS::leaveContext().
Referenced by otawa::dcache::MUSTPERS::lub().
void MUSTProblem::purge | ( | Domain & | out, |
const BlockAccess & | acc | ||
) |
Perform a purge according to the given block access.
out | In-out domain. |
acc | Purging block access. |
References otawa::dcache::BlockAccess::action(), otawa::dcache::BlockAccess::ANY, otawa::dcache::BlockAccess::BLOCK, otawa::dcache::BlockAccess::block(), otawa::dcache::ACS::empty(), otawa::dcache::Block::index(), otawa::dcache::BlockAccess::inRange(), otawa::dcache::BlockAccess::kind(), otawa::dcache::BlockAccess::PURGE, otawa::dcache::BlockAccess::RANGE, otawa::dcache::Block::set(), and set.
Referenced by otawa::dcache::MUSTPERS::update(), and update().
void MUSTProblem::update | ( | Domain & | out, |
const Domain & | in, | ||
BasicBlock * | bb | ||
) |
References assign(), otawa::dcache::DATA_BLOCKS, elm::Pair< T1, T2 >::fst, and elm::Pair< T1, T2 >::snd.
void MUSTProblem::update | ( | Domain & | s, |
const BlockAccess & | access | ||
) |
Update for an access.
References otawa::dcache::BlockAccess::action(), otawa::dcache::MUSTProblem::Domain::ageAll(), otawa::dcache::BlockAccess::ANY, otawa::dcache::BlockAccess::BLOCK, otawa::dcache::BlockAccess::block(), otawa::dcache::BlockAccess::first, otawa::dcache::Block::index(), otawa::dcache::MUSTProblem::Domain::inject(), otawa::dcache::BlockAccess::kind(), otawa::dcache::BlockAccess::last, otawa::dcache::BlockAccess::LOAD, MUST_DEBUG, otawa::clp::NONE, purge(), otawa::dcache::BlockAccess::PURGE, otawa::dcache::BlockAccess::RANGE, otawa::dcache::Block::set(), set, and otawa::dcache::BlockAccess::STORE.
|
private |
Domain otawa::dcache::MUSTProblem::callstate |
|
private |
Referenced by entry(), and MUSTProblem().
|
private |
|
private |