[Mlir-commits] [mlir] f289c47 - [mlir][ODS] Add `constBuilderCall` to `Dense*ArrayAttr`s

Markus Böck llvmlistbot at llvm.org
Wed Aug 17 13:18:21 PDT 2022


Author: Markus Böck
Date: 2022-08-17T22:18:13+02:00
New Revision: f289c47b5eb6f698315fd024be7ff74f3bedffac

URL: https://github.com/llvm/llvm-project/commit/f289c47b5eb6f698315fd024be7ff74f3bedffac
DIFF: https://github.com/llvm/llvm-project/commit/f289c47b5eb6f698315fd024be7ff74f3bedffac.diff

LOG: [mlir][ODS] Add `constBuilderCall` to `Dense*ArrayAttr`s

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

Added: 
    

Modified: 
    mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
    mlir/include/mlir/IR/Builders.h
    mlir/include/mlir/IR/OpBase.td
    mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
    mlir/lib/IR/Builders.cpp

Removed: 
    


################################################################################
diff  --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
index 54ace65efa087..6f19e4a6bbabf 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
@@ -770,11 +770,6 @@ def LLVM_InsertValueOp : LLVM_Op<
                        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)),

diff  --git a/mlir/include/mlir/IR/Builders.h b/mlir/include/mlir/IR/Builders.h
index 29e42768b2b95..687f6679913a8 100644
--- a/mlir/include/mlir/IR/Builders.h
+++ b/mlir/include/mlir/IR/Builders.h
@@ -138,6 +138,7 @@ class Builder {
   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);

diff  --git a/mlir/include/mlir/IR/OpBase.td b/mlir/include/mlir/IR/OpBase.td
index 4047440d11f98..330d26cf9b740 100644
--- a/mlir/include/mlir/IR/OpBase.td
+++ b/mlir/include/mlir/IR/OpBase.td
@@ -1291,6 +1291,7 @@ class DenseArrayAttrBase<string denseAttrName, string cppType, string summaryNam
                      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">;

diff  --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
index a92cfbd46fc57..5c604e4b0c3e2 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
@@ -1619,13 +1619,6 @@ LogicalResult InsertValueOp::verify() {
   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
 //===----------------------------------------------------------------------===//

diff  --git a/mlir/lib/IR/Builders.cpp b/mlir/lib/IR/Builders.cpp
index eb841da88f6db..50f84a6998222 100644
--- a/mlir/lib/IR/Builders.cpp
+++ b/mlir/lib/IR/Builders.cpp
@@ -124,6 +124,10 @@ DenseIntElementsAttr Builder::getIndexVectorAttr(ArrayRef<int64_t> values) {
       values);
 }
 
+DenseBoolArrayAttr Builder::getDenseBoolArrayAttr(ArrayRef<bool> values) {
+  return DenseBoolArrayAttr::get(context, values);
+}
+
 DenseI8ArrayAttr Builder::getDenseI8ArrayAttr(ArrayRef<int8_t> values) {
   return DenseI8ArrayAttr::get(context, values);
 }


        


More information about the Mlir-commits mailing list