These are useful in builders of Ops taking DenseArrayAttrs or for use in Rewriter, to create constant instances.
Differential Revision: https://reviews.llvm.org/D132067
DenseI64ArrayAttr:$position);
let results = (outs LLVM_AnyAggregate:$res);
- let builders = [
- OpBuilder<(ins "Value":$container, "Value":$value,
- "ArrayRef<int64_t>":$position)>
- ];
-
let assemblyFormat = [{
$value `,` $container `` $position attr-dict `:` type($container)
custom<InsertExtractValueElementType>(type($value), ref(type($container)),
DenseIntElementsAttr getIndexTensorAttr(ArrayRef<int64_t> values);
/// Tensor-typed DenseArrayAttr getters.
+ DenseBoolArrayAttr getDenseBoolArrayAttr(ArrayRef<bool> values);
DenseI8ArrayAttr getDenseI8ArrayAttr(ArrayRef<int8_t> values);
DenseI16ArrayAttr getDenseI16ArrayAttr(ArrayRef<int16_t> values);
DenseI32ArrayAttr getDenseI32ArrayAttr(ArrayRef<int32_t> values);
summaryName # " dense array attribute"> {
let storageType = "::mlir::" # denseAttrName;
let returnType = "::llvm::ArrayRef<" # cppType # ">";
+ let constBuilderCall = "$_builder.get" # denseAttrName # "($0)";
}
def DenseBoolArrayAttr : DenseArrayAttrBase<"DenseBoolArrayAttr", "bool", "i1">;
def DenseI8ArrayAttr : DenseArrayAttrBase<"DenseI8ArrayAttr", "int8_t", "i8">;
return success();
}
-void InsertValueOp::build(OpBuilder &builder, OperationState &state,
- Value container, Value value,
- ArrayRef<int64_t> position) {
- build(builder, state, container.getType(), container, value,
- builder.getAttr<DenseI64ArrayAttr>(position));
-}
-
//===----------------------------------------------------------------------===//
// ReturnOp
//===----------------------------------------------------------------------===//
values);
}
+DenseBoolArrayAttr Builder::getDenseBoolArrayAttr(ArrayRef<bool> values) {
+ return DenseBoolArrayAttr::get(context, values);
+}
+
DenseI8ArrayAttr Builder::getDenseI8ArrayAttr(ArrayRef<int8_t> values) {
return DenseI8ArrayAttr::get(context, values);
}