#pragma once #include "mlir/IR/BuiltinTypes.h" #include "mlir/IR/Value.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/SmallVector.h" #include namespace onnx_mlir { llvm::SmallVector computeRowMajorStrides(llvm::ArrayRef shape); llvm::SmallVector delinearizeIndex(int64_t linearIndex, llvm::ArrayRef shape, llvm::ArrayRef strides); int64_t linearizeIndex(llvm::ArrayRef indices, llvm::ArrayRef strides); int64_t getNumElements(llvm::ArrayRef shape); bool hasByteSizedElementType(mlir::Type elementType); size_t getElementTypeSizeInBytes(mlir::Type elementType); size_t getShapedTypeSizeInBytes(mlir::ShapedType shapedType); bool isMemoryContiguous(llvm::ArrayRef srcShape, llvm::ArrayRef offsets, llvm::ArrayRef sizes, llvm::ArrayRef strides); } // namespace onnx_mlir