Changeset View
Changeset View
Standalone View
Standalone View
mlir/lib/IR/Builders.cpp
Show First 20 Lines • Show All 262 Lines • ▼ Show 20 Lines | |||||
ArrayAttr Builder::getAffineMapArrayAttr(ArrayRef<AffineMap> values) { | ArrayAttr Builder::getAffineMapArrayAttr(ArrayRef<AffineMap> values) { | ||||
auto attrs = llvm::to_vector<8>(llvm::map_range( | auto attrs = llvm::to_vector<8>(llvm::map_range( | ||||
values, [](AffineMap v) -> Attribute { return AffineMapAttr::get(v); })); | values, [](AffineMap v) -> Attribute { return AffineMapAttr::get(v); })); | ||||
return getArrayAttr(attrs); | return getArrayAttr(attrs); | ||||
} | } | ||||
Attribute Builder::getZeroAttr(Type type) { | Attribute Builder::getZeroAttr(Type type) { | ||||
switch (type.getKind()) { | if (type.isa<FloatType>()) | ||||
case StandardTypes::BF16: | |||||
case StandardTypes::F16: | |||||
case StandardTypes::F32: | |||||
case StandardTypes::F64: | |||||
return getFloatAttr(type, 0.0); | return getFloatAttr(type, 0.0); | ||||
case StandardTypes::Index: | if (type.isa<IndexType>()) | ||||
return getIndexAttr(0); | return getIndexAttr(0); | ||||
case StandardTypes::Integer: | if (auto integerType = type.dyn_cast<IntegerType>()) | ||||
return getIntegerAttr(type, APInt(type.cast<IntegerType>().getWidth(), 0)); | return getIntegerAttr(type, APInt(type.cast<IntegerType>().getWidth(), 0)); | ||||
case StandardTypes::Vector: | if (type.isa<RankedTensorType, VectorType>()) { | ||||
case StandardTypes::RankedTensor: { | |||||
auto vtType = type.cast<ShapedType>(); | auto vtType = type.cast<ShapedType>(); | ||||
auto element = getZeroAttr(vtType.getElementType()); | auto element = getZeroAttr(vtType.getElementType()); | ||||
if (!element) | if (!element) | ||||
return {}; | return {}; | ||||
return DenseElementsAttr::get(vtType, element); | return DenseElementsAttr::get(vtType, element); | ||||
} | } | ||||
default: | |||||
break; | |||||
} | |||||
return {}; | return {}; | ||||
} | } | ||||
//===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||
// Affine Expressions, Affine Maps, and Integer Sets. | // Affine Expressions, Affine Maps, and Integer Sets. | ||||
//===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||
AffineExpr Builder::getAffineDimExpr(unsigned position) { | AffineExpr Builder::getAffineDimExpr(unsigned position) { | ||||
▲ Show 20 Lines • Show All 164 Lines • Show Last 20 Lines |