73 lines
2.3 KiB
TableGen
73 lines
2.3 KiB
TableGen
#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
|