#pragma once #include "mlir/IR/BuiltinAttributes.h" #include "mlir/IR/Operation.h" #include "mlir/IR/Value.h" #include "llvm/ADT/ArrayRef.h" namespace onnx_mlir { struct CompileTimeSource { mlir::Operation* source; size_t chainLength; }; std::optional getCompileTimeSource(mlir::Operation* op); bool isCompileTimeComputable(mlir::Value value); bool isCompileTimeOp(mlir::Operation* op); mlir::DenseElementsAttr getHostConstDenseElementsAttr(mlir::Value value); mlir::FailureOr transposeDenseElementsAttr( mlir::DenseElementsAttr denseAttr, llvm::ArrayRef permutation); } // namespace onnx_mlir