13 #ifndef MLIR_EDSC_HELPERS_H_ 14 #define MLIR_EDSC_HELPERS_H_ 37 unsigned rank()
const {
return lbs.size(); }
41 std::tuple<ValueHandle, ValueHandle, int64_t>
range(
unsigned idx) {
42 return std::make_tuple(
lbs[idx],
ubs[idx],
steps[idx]);
124 res.indices.push_back(index);
127 template <
typename... Args>
143 return Store(rrhs, getBase(), {indices.begin(), indices.end()});
147 return Store(rhs, getBase(), {indices.begin(), indices.end()});
152 return Load(getBase(), {indices.begin(), indices.end()});
157 return Load(getBase(), {indices.begin(), indices.end()}).getValue();
184 return this->operator+=(static_cast<ValueHandle>(e));
187 return this->operator-=(static_cast<ValueHandle>(e));
190 return this->operator*=(static_cast<ValueHandle>(e));
193 return this->operator/=(static_cast<ValueHandle>(e));
198 : base(base), indices(indices.begin(), indices.end()) {}
202 template <
typename T,
typename... Args>
204 this->indices.push_back(static_cast<ValueHandle>(index));
213 template <
typename Load,
typename Store>
218 template <
typename Load,
typename Store>
223 template <
typename Load,
typename Store>
228 template <
typename Load,
typename Store>
234 template <
typename Load,
typename Store>
237 return Store(*
this + e, getBase(), {indices.begin(), indices.end()});
239 template <
typename Load,
typename Store>
242 return Store(*
this - e, getBase(), {indices.begin(), indices.end()});
244 template <
typename Load,
typename Store>
247 return Store(*
this * e, getBase(), {indices.begin(), indices.end()});
249 template <
typename Load,
typename Store>
252 return Store(*
this / e, getBase(), {indices.begin(), indices.end()});
258 #endif // MLIR_EDSC_HELPERS_H_
unsigned fastestVarying() const
Definition: Helpers.h:73
Definition: InferTypeOpInterface.cpp:20
TemplatedIndexedValue(Value v)
Definition: Helpers.h:114
TemplatedIndexedValue(ValueHandle v)
Definition: Helpers.h:116
TemplatedIndexedValue operator()(ValueHandle index, Args... indices)
Definition: Helpers.h:128
std::tuple< ValueHandle, ValueHandle, int64_t > range(unsigned idx)
Definition: Helpers.h:41
Definition: Builders.h:290
OperationHandle operator+=(ValueHandle e)
Definition: Helpers.h:235
IntInfty operator+(IntInfty lhs, IntInfty rhs)
Definition: SDBM.h:57
OperationHandle operator*=(TemplatedIndexedValue e)
Definition: Helpers.h:189
TemplatedIndexedValue operator()(ValueHandle index)
Returns a new TemplatedIndexedValue.
Definition: Helpers.h:122
OperationHandle operator/=(ValueHandle e)
Definition: Helpers.h:250
OperationHandle operator=(const TemplatedIndexedValue &rhs)
Emits a store.
Definition: Helpers.h:141
TemplatedIndexedValue operator()(ArrayRef< ValueHandle > indices)
Definition: Helpers.h:131
TemplatedIndexedValue(Type t)
Definition: Helpers.h:113
ValueHandle operator*(TemplatedIndexedValue e)
Definition: Helpers.h:177
ValueHandle operator+(TemplatedIndexedValue e)
Definition: Helpers.h:171
ValueHandle operator/(ValueHandle lhs, ValueHandle rhs)
Definition: Builders.cpp:383
unsigned rank() const
Definition: Helpers.h:37
ValueHandle operator/(ValueHandle e)
Definition: Helpers.h:229
int64_t step(unsigned idx)
Definition: Helpers.h:40
ValueHandle operator-(TemplatedIndexedValue e)
Definition: Helpers.h:174
ValueHandle operator+(ValueHandle e)
Operator overloadings.
Definition: Helpers.h:214
OperationHandle operator-=(ValueHandle e)
Definition: Helpers.h:240
OperationHandle operator=(ValueHandle rhs)
Definition: Helpers.h:146
ValueHandle getBase() const
Definition: Helpers.h:160
void swapRanges(unsigned i, unsigned j)
Definition: Helpers.h:44
ValueHandle ub(unsigned idx)
Definition: Helpers.h:39
Definition: Builders.h:385
ArrayRef< ValueHandle > getUbs()
Definition: Helpers.h:53
OperationHandle operator/=(TemplatedIndexedValue e)
Definition: Helpers.h:192
OperationHandle operator+=(TemplatedIndexedValue e)
Definition: Helpers.h:183
TemplatedIndexedValue operator()()
Definition: Helpers.h:120
SmallVector< int64_t, 8 > steps
Definition: Helpers.h:59
AffineExpr operator-(int64_t val, AffineExpr expr)
Definition: AffineExpr.h:207
Value operator*(void) const
Emits a load when converting to a Value.
Definition: Helpers.h:156
TemplatedIndexedValue operator()(ArrayRef< IndexHandle > indices)
Definition: Helpers.h:134
ValueHandle lb(unsigned idx)
Definition: Helpers.h:38
SmallVector< ValueHandle, 8 > lbs
Definition: Helpers.h:57
SmallVector< ValueHandle, 8 > ubs
Definition: Helpers.h:58
AffineExpr operator*(int64_t val, AffineExpr expr)
Definition: AffineExpr.h:206
TemplatedIndexedValue< intrinsics::affine_load, intrinsics::affine_store > IndexedValue
Definition: Helpers.h:30
OperationHandle operator-=(TemplatedIndexedValue e)
Definition: Helpers.h:186
ValueHandle operator/(TemplatedIndexedValue e)
Definition: Helpers.h:180
ArrayRef< int64_t > getSteps()
Definition: Helpers.h:54
ValueHandle operator-(ValueHandle e)
Definition: Helpers.h:219
OperationHandle operator*=(ValueHandle e)
Definition: Helpers.h:245
ArrayRef< ValueHandle > getLbs()
Definition: Helpers.h:52