#ifndef SPATIAL_TO_PIM #define SPATIAL_TO_PIM #ifndef OP_BASE include "mlir/IR/PatternBase.td" include "mlir/Dialect/Tensor/IR/TensorOps.td" include "src/Dialect/ONNX/ONNX.td" include "src/Accelerators/PIM/Dialect/Spatial/Spatial.td" include "src/Accelerators/PIM/Dialect/Pim/Pim.td" #endif // OP_BASE def spatToPimVMM : Pat< (SpatVMMOp:$srcOpRes $weight, $vector), (PimVMMOp $weight, $vector, (NativeCodeCall<"onnx_mlir::getBestOutputTensorFromOperandsOrAllocate($_builder, $0.getDefiningOp())"> $srcOpRes)) >; def spatToPimVVDMul : Pat< (SpatVVDMulOp:$srcOpRes $a, $b), (PimVVDMulOp $a, $b, (NativeCodeCall<"onnx_mlir::getBestOutputTensorFromOperandsOrAllocate($_builder, $0.getDefiningOp())"> $srcOpRes)) >; def spatToPimVVAdd : Pat< (SpatVAddOp:$srcOpRes $a, $b), (PimVVAddOp $a, $b, (NativeCodeCall<"onnx_mlir::getBestOutputTensorFromOperandsOrAllocate($_builder, $0.getDefiningOp())"> $srcOpRes)) >; def spatToPimVVSub : Pat< (SpatVSubOp:$srcOpRes $a, $b), (PimVVSubOp $a, $b, (NativeCodeCall<"onnx_mlir::getBestOutputTensorFromOperandsOrAllocate($_builder, $0.getDefiningOp())"> $srcOpRes)) >; def spatToPimVVMul : Pat< (SpatVMulOp:$srcOpRes $a, $b), (PimVVMulOp $a, $b, (NativeCodeCall<"onnx_mlir::getBestOutputTensorFromOperandsOrAllocate($_builder, $0.getDefiningOp())"> $srcOpRes)) >; def spatToPimVAvg : Pat< (SpatVAvgOp:$srcOpRes $input), (PimVAvgOp $input, (NativeCodeCall<"onnx_mlir::getBestOutputTensorFromOperandsOrAllocate($_builder, $0.getDefiningOp())"> $srcOpRes)) >; def spatToPimVVMax : Pat< (SpatVMaxOp:$srcOpRes $a, $b), (PimVVMaxOp $a, $b, (NativeCodeCall<"onnx_mlir::getBestOutputTensorFromOperandsOrAllocate($_builder, $0.getDefiningOp())"> $srcOpRes)) >; def spatToPimVRelu : Pat< (SpatReluOp:$srcOpRes $input), (PimVReluOp $input, (NativeCodeCall<"onnx_mlir::getBestOutputTensorFromOperandsOrAllocate($_builder, $0.getDefiningOp())"> $srcOpRes)) >; def spatToPimVSigm : Pat< (SpatSigmoidOp:$srcOpRes $input), (PimVSigmOp $input, (NativeCodeCall<"onnx_mlir::getBestOutputTensorFromOperandsOrAllocate($_builder, $0.getDefiningOp())"> $srcOpRes)) >; def spatToPimVSoftmax : Pat< (SpatSoftmaxOp:$srcOpRes $input), (PimVSoftmaxOp $input, (NativeCodeCall<"onnx_mlir::getBestOutputTensorFromOperandsOrAllocate($_builder, $0.getDefiningOp())"> $srcOpRes)) >; #endif // SPATIAL_TO_PIM