#pragma once #include "mlir/Dialect/MemRef/IR/MemRef.h" #include "mlir/IR/BuiltinAttributes.h" #include "mlir/IR/BuiltinTypes.h" #include "mlir/IR/PatternMatch.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/StringRef.h" #include "src/Accelerators/PIM/Common/IR/SubviewUtils.hpp" namespace onnx_mlir { mlir::memref::GlobalOp createFoldedGlobal(mlir::ModuleOp moduleOp, mlir::Location loc, mlir::MemRefType globalType, mlir::DenseElementsAttr denseAttr, llvm::StringRef nameStem, mlir::IntegerAttr alignment = {}); llvm::FailureOr foldDenseSubview(mlir::DenseElementsAttr denseAttr, llvm::ArrayRef staticOffsets, llvm::ArrayRef resultShape); llvm::FailureOr getDenseGlobalValue(mlir::ModuleOp moduleOp, mlir::Value value); llvm::FailureOr foldDenseSourceToType(mlir::ModuleOp moduleOp, mlir::Value source, mlir::MemRefType resultType); } // namespace onnx_mlir