Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,14 @@ class SimpleWrapIterator : public SparseIterator {
unsigned extraCursorVal = 0)
: SparseIterator(kind, *wrap, extraCursorVal), wrap(std::move(wrap)) {}

void setSparseEmitStrategy(SparseEmitStrategy strategy) override {
wrap->setSparseEmitStrategy(strategy);
}

SparseEmitStrategy getSparseEmitStrategy() const override {
return wrap->getSparseEmitStrategy();
}

SmallVector<Type> getCursorValTypes(OpBuilder &b) const override {
return wrap->getCursorValTypes(b);
}
Expand Down Expand Up @@ -979,7 +987,7 @@ class SubSectIterator : public SparseIterator {

void SparseIterator::genInit(OpBuilder &b, Location l,
const SparseIterator *p) {
if (emitStrategy == SparseEmitStrategy::kDebugInterface) {
if (getSparseEmitStrategy() == SparseEmitStrategy::kDebugInterface) {
std::string prefix = getDebugInterfacePrefix();
Operation *begin = b.create(l, b.getStringAttr(prefix + ".begin"), {},
getCursorValTypes(b));
Expand All @@ -994,7 +1002,7 @@ void SparseIterator::genInit(OpBuilder &b, Location l,
}

Value SparseIterator::genNotEnd(OpBuilder &b, Location l) {
if (emitStrategy == SparseEmitStrategy::kDebugInterface) {
if (getSparseEmitStrategy() == SparseEmitStrategy::kDebugInterface) {
std::string prefix = getDebugInterfacePrefix();
Operation *notEnd = b.create(l, b.getStringAttr(prefix + ".not_end"),
getCursor(), b.getI1Type());
Expand All @@ -1005,7 +1013,7 @@ Value SparseIterator::genNotEnd(OpBuilder &b, Location l) {
}

void SparseIterator::locate(OpBuilder &b, Location l, Value crd) {
if (emitStrategy == SparseEmitStrategy::kDebugInterface) {
if (getSparseEmitStrategy() == SparseEmitStrategy::kDebugInterface) {
std::string prefix = getDebugInterfacePrefix();
SmallVector<Value> args = getCursor();
args.push_back(crd);
Expand All @@ -1019,7 +1027,7 @@ void SparseIterator::locate(OpBuilder &b, Location l, Value crd) {
}

Value SparseIterator::deref(OpBuilder &b, Location l) {
if (emitStrategy == SparseEmitStrategy::kDebugInterface) {
if (getSparseEmitStrategy() == SparseEmitStrategy::kDebugInterface) {
std::string prefix = getDebugInterfacePrefix();
SmallVector<Value> args = getCursor();
Operation *deref = b.create(l, b.getStringAttr(prefix + ".deref"),
Expand All @@ -1032,7 +1040,7 @@ Value SparseIterator::deref(OpBuilder &b, Location l) {

ValueRange SparseIterator::forward(OpBuilder &b, Location l) {
assert(!randomAccessible());
if (emitStrategy == SparseEmitStrategy::kDebugInterface) {
if (getSparseEmitStrategy() == SparseEmitStrategy::kDebugInterface) {
std::string prefix = getDebugInterfacePrefix();
Operation *next = b.create(l, b.getStringAttr(prefix + ".next"),
getCursor(), getCursorValTypes(b));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,10 +177,14 @@ class SparseIterator {
public:
virtual ~SparseIterator() = default;

void setSparseEmitStrategy(SparseEmitStrategy strategy) {
virtual void setSparseEmitStrategy(SparseEmitStrategy strategy) {
emitStrategy = strategy;
}

virtual SparseEmitStrategy getSparseEmitStrategy() const {
return emitStrategy;
}

virtual std::string getDebugInterfacePrefix() const = 0;
virtual SmallVector<Type> getCursorValTypes(OpBuilder &b) const = 0;

Expand Down