Move to more recent LLVM commit ID (#64)
* Move to more recent LLVM commit ID * Update LLVM cache version from V9 to V10 * Update to latest LLVM commit id from master, roll back conditions in util scripts * Update circlci LLVM cache tag to ensure ci updates builds with latest LLVM commit id * Update README.md to have matching LLVM commit id * Update doc/Dialtects/onnx.md
This commit is contained in:
parent
b422116f12
commit
b65e77305c
|
@ -18,7 +18,7 @@ jobs:
|
||||||
git submodule update --init --recursive
|
git submodule update --init --recursive
|
||||||
# Use cached mlir installation if possible.
|
# Use cached mlir installation if possible.
|
||||||
- restore_cache:
|
- restore_cache:
|
||||||
key: V9-LLVM-PROJECT-{{ arch }}
|
key: V10-1-LLVM-PROJECT-{{ arch }}
|
||||||
- run:
|
- run:
|
||||||
name: Install MLIR
|
name: Install MLIR
|
||||||
command: |
|
command: |
|
||||||
|
@ -29,7 +29,7 @@ jobs:
|
||||||
source onnx-mlir/utils/install-mlir.sh
|
source onnx-mlir/utils/install-mlir.sh
|
||||||
fi
|
fi
|
||||||
- save_cache:
|
- save_cache:
|
||||||
key: V9-LLVM-PROJECT-{{ arch }}
|
key: V10-1-LLVM-PROJECT-{{ arch }}
|
||||||
paths:
|
paths:
|
||||||
- llvm-project
|
- llvm-project
|
||||||
- run:
|
- run:
|
||||||
|
|
28
MLIR.cmake
28
MLIR.cmake
|
@ -54,9 +54,11 @@ function(find_mlir_lib lib)
|
||||||
NO_DEFAULT_PATH)
|
NO_DEFAULT_PATH)
|
||||||
endfunction(find_mlir_lib)
|
endfunction(find_mlir_lib)
|
||||||
|
|
||||||
find_mlir_lib(MLIRAffineOps)
|
find_mlir_lib(MLIRAffine)
|
||||||
find_mlir_lib(MLIRAffineToStandard)
|
find_mlir_lib(MLIRAffineToStandard)
|
||||||
find_mlir_lib(MLIRAnalysis)
|
find_mlir_lib(MLIRAnalysis)
|
||||||
|
find_mlir_lib(MLIRCallInterfaces)
|
||||||
|
find_mlir_lib(MLIRControlFlowInterfaces)
|
||||||
find_mlir_lib(MLIRDialect)
|
find_mlir_lib(MLIRDialect)
|
||||||
find_mlir_lib(MLIREDSC)
|
find_mlir_lib(MLIREDSC)
|
||||||
find_mlir_lib(MLIRExecutionEngine)
|
find_mlir_lib(MLIRExecutionEngine)
|
||||||
|
@ -65,21 +67,25 @@ find_mlir_lib(MLIRLLVMIR)
|
||||||
find_mlir_lib(MLIRLoopAnalysis)
|
find_mlir_lib(MLIRLoopAnalysis)
|
||||||
find_mlir_lib(MLIRLoopToStandard)
|
find_mlir_lib(MLIRLoopToStandard)
|
||||||
find_mlir_lib(MLIRLoopOps)
|
find_mlir_lib(MLIRLoopOps)
|
||||||
|
find_mlir_lib(MLIRLoopLikeInterface)
|
||||||
|
find_mlir_lib(MLIRLLVMIRTransforms)
|
||||||
|
find_mlir_lib(MLIRMlirOptMain)
|
||||||
find_mlir_lib(MLIRParser)
|
find_mlir_lib(MLIRParser)
|
||||||
find_mlir_lib(MLIRPass)
|
find_mlir_lib(MLIRPass)
|
||||||
find_mlir_lib(MLIRStandardOps)
|
find_mlir_lib(MLIRStandardOps)
|
||||||
find_mlir_lib(MLIRStandardToLLVM)
|
find_mlir_lib(MLIRStandardToLLVM)
|
||||||
|
find_mlir_lib(MLIRSideEffects)
|
||||||
find_mlir_lib(MLIRTargetLLVMIR)
|
find_mlir_lib(MLIRTargetLLVMIR)
|
||||||
find_mlir_lib(MLIRTransforms)
|
find_mlir_lib(MLIRTransforms)
|
||||||
find_mlir_lib(MLIRTransformUtils)
|
find_mlir_lib(MLIRTransformUtils)
|
||||||
find_mlir_lib(MLIRSupport)
|
find_mlir_lib(MLIRSupport)
|
||||||
find_mlir_lib(MLIRMlirOptMain)
|
find_mlir_lib(MLIROpenMP)
|
||||||
find_mlir_lib(MLIROptLib)
|
find_mlir_lib(MLIROptLib)
|
||||||
find_mlir_lib(MLIRTargetLLVMIRModuleTranslation)
|
find_mlir_lib(MLIRTargetLLVMIRModuleTranslation)
|
||||||
find_mlir_lib(MLIRTargetLLVMIR)
|
find_mlir_lib(MLIRTargetLLVMIR)
|
||||||
find_mlir_lib(MLIRTransformUtils)
|
find_mlir_lib(MLIRTransformUtils)
|
||||||
find_mlir_lib(MLIRTranslation)
|
find_mlir_lib(MLIRTranslation)
|
||||||
find_mlir_lib(MLIRVectorOps)
|
find_mlir_lib(MLIRVector)
|
||||||
|
|
||||||
find_mlir_lib(LLVMCore)
|
find_mlir_lib(LLVMCore)
|
||||||
find_mlir_lib(LLVMSupport)
|
find_mlir_lib(LLVMSupport)
|
||||||
|
@ -87,6 +93,7 @@ find_mlir_lib(LLVMAsmParser)
|
||||||
find_mlir_lib(LLVMBinaryFormat)
|
find_mlir_lib(LLVMBinaryFormat)
|
||||||
find_mlir_lib(LLVMRemarks)
|
find_mlir_lib(LLVMRemarks)
|
||||||
find_mlir_lib(LLVMIRReader)
|
find_mlir_lib(LLVMIRReader)
|
||||||
|
find_mlir_lib(LLVMMLIRTableGen)
|
||||||
find_mlir_lib(LLVMTransformUtils)
|
find_mlir_lib(LLVMTransformUtils)
|
||||||
find_mlir_lib(LLVMBitstreamReader)
|
find_mlir_lib(LLVMBitstreamReader)
|
||||||
find_mlir_lib(LLVMAnalysis)
|
find_mlir_lib(LLVMAnalysis)
|
||||||
|
@ -97,6 +104,7 @@ find_mlir_lib(LLVMMCParser)
|
||||||
find_mlir_lib(LLVMObject)
|
find_mlir_lib(LLVMObject)
|
||||||
find_mlir_lib(LLVMProfileData)
|
find_mlir_lib(LLVMProfileData)
|
||||||
find_mlir_lib(LLVMDemangle)
|
find_mlir_lib(LLVMDemangle)
|
||||||
|
find_mlir_lib(LLVMFrontendOpenMP)
|
||||||
|
|
||||||
|
|
||||||
set(MLIRLibsOnce
|
set(MLIRLibsOnce
|
||||||
|
@ -107,30 +115,38 @@ set(MLIRLibsOnce
|
||||||
${LLVMBitstreamReader}
|
${LLVMBitstreamReader}
|
||||||
${LLVMBitWriter}
|
${LLVMBitWriter}
|
||||||
${LLVMCore}
|
${LLVMCore}
|
||||||
|
${LLVMFrontendOpenMP}
|
||||||
${LLVMIRReader}
|
${LLVMIRReader}
|
||||||
${LLVMMC}
|
${LLVMMC}
|
||||||
${LLVMMCParser}
|
${LLVMMCParser}
|
||||||
|
${LLVMMLIRTableGen}
|
||||||
${LLVMObject}
|
${LLVMObject}
|
||||||
${LLVMRemarks}
|
${LLVMRemarks}
|
||||||
${LLVMSupport}
|
${LLVMSupport}
|
||||||
${LLVMTransformUtils}
|
${LLVMTransformUtils}
|
||||||
${LLVMProfileData}
|
${LLVMProfileData}
|
||||||
${LLVMDemangle}
|
${LLVMDemangle}
|
||||||
${MLIRAffineOps}
|
${MLIRAffine}
|
||||||
${MLIRAffineToStandard}
|
${MLIRAffineToStandard}
|
||||||
${MLIRAnalysis}
|
${MLIRAnalysis}
|
||||||
|
${MLIRCallInterfaces}
|
||||||
|
${MLIRControlFlowInterfaces}
|
||||||
${MLIRDialect}
|
${MLIRDialect}
|
||||||
${MLIREDSC}
|
${MLIREDSC}
|
||||||
${MLIRExecutionEngine}
|
${MLIRExecutionEngine}
|
||||||
${MLIRIR}
|
${MLIRIR}
|
||||||
${MLIRLLVMIR}
|
${MLIRLLVMIR}
|
||||||
|
${MLIRLLVMIRTransforms}
|
||||||
${MLIRLoopToStandard}
|
${MLIRLoopToStandard}
|
||||||
${MLIRLoopOps}
|
${MLIRLoopOps}
|
||||||
${MLIRLoopAnalysis}
|
${MLIRLoopAnalysis}
|
||||||
|
${MLIRLoopLikeInterface}
|
||||||
|
${MLIROpenMP}
|
||||||
${MLIRMlirOptMain}
|
${MLIRMlirOptMain}
|
||||||
${MLIROptLib}
|
${MLIROptLib}
|
||||||
${MLIRParser}
|
${MLIRParser}
|
||||||
${MLIRPass}
|
${MLIRPass}
|
||||||
|
${MLIRSideEffects}
|
||||||
${MLIRStandardOps}
|
${MLIRStandardOps}
|
||||||
${MLIRStandardToLLVM}
|
${MLIRStandardToLLVM}
|
||||||
${MLIRSupport}
|
${MLIRSupport}
|
||||||
|
@ -147,13 +163,13 @@ set(MLIRLibs
|
||||||
|
|
||||||
set(MLIRWholeArchiveLibs
|
set(MLIRWholeArchiveLibs
|
||||||
MLIRAffineToStandard
|
MLIRAffineToStandard
|
||||||
MLIRAffineOps
|
MLIRAffine
|
||||||
MLIRLLVMIR
|
MLIRLLVMIR
|
||||||
MLIRStandardOps
|
MLIRStandardOps
|
||||||
MLIRStandardToLLVM
|
MLIRStandardToLLVM
|
||||||
MLIRTransforms
|
MLIRTransforms
|
||||||
MLIRLoopToStandard
|
MLIRLoopToStandard
|
||||||
MLIRVectorOps
|
MLIRVector
|
||||||
MLIRLoopOps)
|
MLIRLoopOps)
|
||||||
|
|
||||||
function(whole_archive_link target lib_dir)
|
function(whole_archive_link target lib_dir)
|
||||||
|
|
|
@ -19,7 +19,7 @@ Firstly, install MLIR (as a part of LLVM-Project):
|
||||||
``` bash
|
``` bash
|
||||||
git clone https://github.com/llvm/llvm-project.git
|
git clone https://github.com/llvm/llvm-project.git
|
||||||
# Check out a specific branch that is known to work with ONNX MLIR.
|
# Check out a specific branch that is known to work with ONNX MLIR.
|
||||||
cd llvm-project && git checkout 076475713c236081a3247a53e9dbab9043c3eac2 && cd ..
|
cd llvm-project && git checkout 07e462526d0cbae40b320e1a4307ce11e197fb0a && cd ..
|
||||||
mkdir llvm-project/build
|
mkdir llvm-project/build
|
||||||
cd llvm-project/build
|
cd llvm-project/build
|
||||||
cmake -G Ninja ../llvm \
|
cmake -G Ninja ../llvm \
|
||||||
|
|
3747
doc/Dialects/onnx.md
3747
doc/Dialects/onnx.md
File diff suppressed because it is too large
Load Diff
|
@ -15,7 +15,7 @@
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
|
|
||||||
#include "mlir/Analysis/Verifier.h"
|
#include "mlir/Analysis/Verifier.h"
|
||||||
#include "mlir/Dialect/StandardOps/Ops.h"
|
#include "mlir/Dialect/StandardOps/IR/Ops.h"
|
||||||
#include "mlir/IR/Attributes.h"
|
#include "mlir/IR/Attributes.h"
|
||||||
#include "mlir/IR/Builders.h"
|
#include "mlir/IR/Builders.h"
|
||||||
#include "mlir/IR/Function.h"
|
#include "mlir/IR/Function.h"
|
||||||
|
|
|
@ -21,7 +21,7 @@ class ONNXEntryPointLowering : public OpRewritePattern<ONNXEntryPointOp> {
|
||||||
public:
|
public:
|
||||||
using OpRewritePattern<ONNXEntryPointOp>::OpRewritePattern;
|
using OpRewritePattern<ONNXEntryPointOp>::OpRewritePattern;
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(ONNXEntryPointOp op,
|
LogicalResult matchAndRewrite(ONNXEntryPointOp op,
|
||||||
PatternRewriter &rewriter) const override {
|
PatternRewriter &rewriter) const override {
|
||||||
rewriter.replaceOpWithNewOp<KrnlEntryPointOp>(
|
rewriter.replaceOpWithNewOp<KrnlEntryPointOp>(
|
||||||
op,
|
op,
|
||||||
|
@ -30,7 +30,7 @@ public:
|
||||||
op.getAttrOfType<IntegerAttr>(ONNXEntryPointOp::getNumInputsAttrName()),
|
op.getAttrOfType<IntegerAttr>(ONNXEntryPointOp::getNumInputsAttrName()),
|
||||||
op.getAttrOfType<IntegerAttr>(
|
op.getAttrOfType<IntegerAttr>(
|
||||||
ONNXEntryPointOp::getNumOutputsAttrName()));
|
ONNXEntryPointOp::getNumOutputsAttrName()));
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ void FrontendToKrnlLoweringPass::runOnModule() {
|
||||||
// We define the specific operations, or dialects, that are legal targets for
|
// We define the specific operations, or dialects, that are legal targets for
|
||||||
// this lowering.
|
// this lowering.
|
||||||
target
|
target
|
||||||
.addLegalDialect<KrnlOpsDialect, AffineOpsDialect, StandardOpsDialect>();
|
.addLegalDialect<KrnlOpsDialect, AffineDialect, StandardOpsDialect>();
|
||||||
|
|
||||||
// TODO: enable this once more ops are supported.
|
// TODO: enable this once more ops are supported.
|
||||||
// We also define the ONNX dialect as Illegal so that the conversion will fail
|
// We also define the ONNX dialect as Illegal so that the conversion will fail
|
||||||
|
|
|
@ -495,7 +495,7 @@ template <typename ElementwiseUnaryOp>
|
||||||
struct ONNXElementwiseUnaryOpLowering : public ConversionPattern {
|
struct ONNXElementwiseUnaryOpLowering : public ConversionPattern {
|
||||||
ONNXElementwiseUnaryOpLowering(MLIRContext *ctx)
|
ONNXElementwiseUnaryOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(ElementwiseUnaryOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(ElementwiseUnaryOp::getOperationName(), 1, ctx) {}
|
||||||
PatternMatchResult
|
LogicalResult
|
||||||
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
// TODO: Check that the types are valid.
|
// TODO: Check that the types are valid.
|
||||||
|
@ -553,7 +553,7 @@ struct ONNXElementwiseUnaryOpLowering : public ConversionPattern {
|
||||||
|
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -563,7 +563,7 @@ template <typename ElementwiseVariadicOp>
|
||||||
struct ONNXElementwiseVariadicOpLowering : public ConversionPattern {
|
struct ONNXElementwiseVariadicOpLowering : public ConversionPattern {
|
||||||
ONNXElementwiseVariadicOpLowering(MLIRContext *ctx)
|
ONNXElementwiseVariadicOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(ElementwiseVariadicOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(ElementwiseVariadicOp::getOperationName(), 1, ctx) {}
|
||||||
PatternMatchResult
|
LogicalResult
|
||||||
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
// TODO: Check that the types are valid.
|
// TODO: Check that the types are valid.
|
||||||
|
@ -633,7 +633,7 @@ struct ONNXElementwiseVariadicOpLowering : public ConversionPattern {
|
||||||
|
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct ONNXGemmOpLowering : public ConversionPattern {
|
||||||
ONNXGemmOpLowering(MLIRContext *ctx)
|
ONNXGemmOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(GemmOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(GemmOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult
|
LogicalResult
|
||||||
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
auto loc = op->getLoc();
|
auto loc = op->getLoc();
|
||||||
|
@ -210,7 +210,7 @@ struct ONNXGemmOpLowering : public ConversionPattern {
|
||||||
|
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ struct ONNXMatMulOpLowering : public ConversionPattern {
|
||||||
ONNXMatMulOpLowering(MLIRContext *ctx)
|
ONNXMatMulOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(mlir::ONNXMatMulOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(mlir::ONNXMatMulOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult
|
LogicalResult
|
||||||
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
auto loc = op->getLoc();
|
auto loc = op->getLoc();
|
||||||
|
@ -330,7 +330,7 @@ struct ONNXMatMulOpLowering : public ConversionPattern {
|
||||||
|
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ struct ONNXReductionOpLowering : public ConversionPattern {
|
||||||
ONNXReductionOpLowering(MLIRContext *ctx)
|
ONNXReductionOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(ONNXReductionOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(ONNXReductionOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult
|
LogicalResult
|
||||||
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
/*
|
/*
|
||||||
|
@ -271,7 +271,7 @@ struct ONNXReductionOpLowering : public ConversionPattern {
|
||||||
rewriter.create<StoreOp>(loc, accumulated, alloc, outLoopIVs);
|
rewriter.create<StoreOp>(loc, accumulated, alloc, outLoopIVs);
|
||||||
|
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ using namespace mlir;
|
||||||
struct ONNXSoftmaxOpLowering : public ConversionPattern {
|
struct ONNXSoftmaxOpLowering : public ConversionPattern {
|
||||||
ONNXSoftmaxOpLowering(MLIRContext *ctx)
|
ONNXSoftmaxOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(mlir::ONNXSoftmaxOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(mlir::ONNXSoftmaxOp::getOperationName(), 1, ctx) {}
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
// softmax(x) = let max_x = max(x) in
|
// softmax(x) = let max_x = max(x) in
|
||||||
// let exp_x = exp(x - max_x) in
|
// let exp_x = exp(x - max_x) in
|
||||||
|
@ -196,7 +196,7 @@ struct ONNXSoftmaxOpLowering : public ConversionPattern {
|
||||||
|
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ struct ONNXConvOpLowering : public ConversionPattern {
|
||||||
ONNXConvOpLowering(MLIRContext *ctx)
|
ONNXConvOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(mlir::ONNXConvOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(mlir::ONNXConvOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
auto loc = op->getLoc();
|
auto loc = op->getLoc();
|
||||||
ONNXConvOpOperandAdaptor operandAdaptor(operands);
|
ONNXConvOpOperandAdaptor operandAdaptor(operands);
|
||||||
|
@ -250,7 +250,7 @@ struct ONNXConvOpLowering : public ConversionPattern {
|
||||||
}
|
}
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct ONNXBatchNormalizationTestModeOpLowering : public ConversionPattern {
|
||||||
: ConversionPattern(
|
: ConversionPattern(
|
||||||
mlir::ONNXBatchNormalizationTestModeOp::getOperationName(), 1,
|
mlir::ONNXBatchNormalizationTestModeOp::getOperationName(), 1,
|
||||||
ctx) {}
|
ctx) {}
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
// batchnorm{epsilon}(x, scale, bias, mean, variance) =
|
// batchnorm{epsilon}(x, scale, bias, mean, variance) =
|
||||||
// scale * (x - mean) / sqrt(variance + epsilon) + bias
|
// scale * (x - mean) / sqrt(variance + epsilon) + bias
|
||||||
|
@ -133,7 +133,7 @@ struct ONNXBatchNormalizationTestModeOpLowering : public ConversionPattern {
|
||||||
|
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ struct ONNXMaxPoolSingleOutOpLowering : public ConversionPattern {
|
||||||
: ConversionPattern(
|
: ConversionPattern(
|
||||||
mlir::ONNXMaxPoolSingleOutOp::getOperationName(), 1, ctx) {}
|
mlir::ONNXMaxPoolSingleOutOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
ONNXMaxPoolSingleOutOpOperandAdaptor operandAdaptor(operands);
|
ONNXMaxPoolSingleOutOpOperandAdaptor operandAdaptor(operands);
|
||||||
auto loc = op->getLoc();
|
auto loc = op->getLoc();
|
||||||
|
@ -315,7 +315,7 @@ struct ONNXMaxPoolSingleOutOpLowering : public ConversionPattern {
|
||||||
}
|
}
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,8 @@
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
#include "mlir/Dialect/AffineOps/AffineOps.h"
|
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||||
#include "mlir/Dialect/StandardOps/Ops.h"
|
#include "mlir/Dialect/StandardOps/IR/Ops.h"
|
||||||
#include "mlir/Pass/Pass.h"
|
#include "mlir/Pass/Pass.h"
|
||||||
#include "mlir/Transforms/DialectConversion.h"
|
#include "mlir/Transforms/DialectConversion.h"
|
||||||
#include "llvm/ADT/ArrayRef.h"
|
#include "llvm/ADT/ArrayRef.h"
|
||||||
|
|
|
@ -47,7 +47,7 @@ struct ONNXConstantOpLowering : public ConversionPattern {
|
||||||
ONNXConstantOpLowering(MLIRContext *ctx)
|
ONNXConstantOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(mlir::ONNXConstantOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(mlir::ONNXConstantOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
auto loc = op->getLoc();
|
auto loc = op->getLoc();
|
||||||
auto constantOp = llvm::dyn_cast<ONNXConstantOp>(op);
|
auto constantOp = llvm::dyn_cast<ONNXConstantOp>(op);
|
||||||
|
@ -90,7 +90,7 @@ struct ONNXConstantOpLowering : public ConversionPattern {
|
||||||
// Replace this operation with the generated alloc.
|
// Replace this operation with the generated alloc.
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,11 @@ struct ONNXIdentityOpLowering : public ConversionPattern {
|
||||||
ONNXIdentityOpLowering(MLIRContext *ctx)
|
ONNXIdentityOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(mlir::ONNXIdentityOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(mlir::ONNXIdentityOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
ONNXIdentityOpOperandAdaptor operandAdaptor(operands);
|
ONNXIdentityOpOperandAdaptor operandAdaptor(operands);
|
||||||
rewriter.replaceOp(op, operandAdaptor.input());
|
rewriter.replaceOp(op, operandAdaptor.input());
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ struct ONNXPadConstantValuePadOpLowering : public ConversionPattern {
|
||||||
: ConversionPattern(
|
: ConversionPattern(
|
||||||
mlir::ONNXPadConstantValuePadOp::getOperationName(), 1, ctx) {}
|
mlir::ONNXPadConstantValuePadOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
auto tensorType = (*op->result_type_begin());
|
auto tensorType = (*op->result_type_begin());
|
||||||
ONNXPadConstantValuePadOpOperandAdaptor operandAdaptor(operands);
|
ONNXPadConstantValuePadOpOperandAdaptor operandAdaptor(operands);
|
||||||
|
@ -98,7 +98,7 @@ struct ONNXPadConstantValuePadOpLowering : public ConversionPattern {
|
||||||
// Replace the original op with the generated code.
|
// Replace the original op with the generated code.
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ struct ONNXReshapeOpLowering : public ConversionPattern {
|
||||||
ONNXReshapeOpLowering(MLIRContext *ctx)
|
ONNXReshapeOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(mlir::ONNXReshapeOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(mlir::ONNXReshapeOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
ONNXReshapeOpOperandAdaptor operandAdaptor(operands);
|
ONNXReshapeOpOperandAdaptor operandAdaptor(operands);
|
||||||
auto loc = op->getLoc();
|
auto loc = op->getLoc();
|
||||||
|
@ -139,7 +139,7 @@ struct ONNXReshapeOpLowering : public ConversionPattern {
|
||||||
rewriter.create<KrnlMemcpyOp>(loc, alloc, data, tensorSize);
|
rewriter.create<KrnlMemcpyOp>(loc, alloc, data, tensorSize);
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ struct ONNXTransposeOpLowering : public ConversionPattern {
|
||||||
ONNXTransposeOpLowering(MLIRContext *ctx)
|
ONNXTransposeOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(mlir::ONNXTransposeOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(mlir::ONNXTransposeOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
ONNXTransposeOpOperandAdaptor operandAdaptor(operands);
|
ONNXTransposeOpOperandAdaptor operandAdaptor(operands);
|
||||||
auto loc = op->getLoc();
|
auto loc = op->getLoc();
|
||||||
|
@ -93,7 +93,7 @@ struct ONNXTransposeOpLowering : public ConversionPattern {
|
||||||
|
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
|
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ struct ONNXUnsqueezeOpLowering : public ConversionPattern {
|
||||||
ONNXUnsqueezeOpLowering(MLIRContext *ctx)
|
ONNXUnsqueezeOpLowering(MLIRContext *ctx)
|
||||||
: ConversionPattern(mlir::ONNXUnsqueezeOp::getOperationName(), 1, ctx) {}
|
: ConversionPattern(mlir::ONNXUnsqueezeOp::getOperationName(), 1, ctx) {}
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const final {
|
ConversionPatternRewriter &rewriter) const final {
|
||||||
ONNXUnsqueezeOpOperandAdaptor operandAdaptor(operands);
|
ONNXUnsqueezeOpOperandAdaptor operandAdaptor(operands);
|
||||||
auto loc = op->getLoc();
|
auto loc = op->getLoc();
|
||||||
|
@ -77,7 +77,7 @@ struct ONNXUnsqueezeOpLowering : public ConversionPattern {
|
||||||
}
|
}
|
||||||
rewriter.create<KrnlMemcpyOp>(loc, alloc, data, tensorSize);
|
rewriter.create<KrnlMemcpyOp>(loc, alloc, data, tensorSize);
|
||||||
rewriter.replaceOp(op, alloc);
|
rewriter.replaceOp(op, alloc);
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "mlir/Dialect/AffineOps/AffineOps.h"
|
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||||
#include "mlir/Dialect/StandardOps/Ops.h"
|
#include "mlir/Dialect/StandardOps/IR/Ops.h"
|
||||||
#include "mlir/IR/AffineExpr.h"
|
#include "mlir/IR/AffineExpr.h"
|
||||||
|
|
||||||
#include "KrnlOps.hpp"
|
#include "KrnlOps.hpp"
|
||||||
|
|
|
@ -11,8 +11,8 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
|
||||||
#include "mlir/Dialect/AffineOps/AffineOps.h"
|
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||||
#include "mlir/Dialect/StandardOps/Ops.h"
|
#include "mlir/Dialect/StandardOps/IR/Ops.h"
|
||||||
#include "mlir/IR/Block.h"
|
#include "mlir/IR/Block.h"
|
||||||
#include "mlir/IR/Builders.h"
|
#include "mlir/IR/Builders.h"
|
||||||
#include "mlir/IR/Function.h"
|
#include "mlir/IR/Function.h"
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "mlir/Dialect/StandardOps/Ops.h"
|
#include "mlir/Dialect/StandardOps/IR/Ops.h"
|
||||||
#include "mlir/IR/Builders.h"
|
#include "mlir/IR/Builders.h"
|
||||||
#include "mlir/IR/Dialect.h"
|
#include "mlir/IR/Dialect.h"
|
||||||
#include "mlir/IR/OpDefinition.h"
|
#include "mlir/IR/OpDefinition.h"
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
// This file is automatically generated via script.
|
// This file is automatically generated via script.
|
||||||
// Details can be found in doc/readonnxdefs.md .
|
// Details can be found in doc/readonnxdefs.md .
|
||||||
//********************************************************
|
//********************************************************
|
||||||
|
include "mlir/Interfaces/SideEffects.td"
|
||||||
|
|
||||||
def ONNXAbsOp:ONNX_Op<"Abs",
|
def ONNXAbsOp:ONNX_Op<"Abs",
|
||||||
[NoSideEffect, DeclareOpInterfaceMethods<ShapeInferenceOpInterface>]> {
|
[NoSideEffect, DeclareOpInterfaceMethods<ShapeInferenceOpInterface>]> {
|
||||||
|
|
|
@ -45,7 +45,7 @@ void EmitLLVMBitCode(const mlir::OwningModuleRef &module) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerDialects() {
|
void registerDialects() {
|
||||||
mlir::registerDialect<mlir::AffineOpsDialect>();
|
mlir::registerDialect<mlir::AffineDialect>();
|
||||||
mlir::registerDialect<mlir::LLVM::LLVMDialect>();
|
mlir::registerDialect<mlir::LLVM::LLVMDialect>();
|
||||||
mlir::registerDialect<mlir::loop::LoopOpsDialect>();
|
mlir::registerDialect<mlir::loop::LoopOpsDialect>();
|
||||||
mlir::registerDialect<mlir::StandardOpsDialect>();
|
mlir::registerDialect<mlir::StandardOpsDialect>();
|
||||||
|
|
|
@ -48,8 +48,13 @@ static llvm::cl::opt<bool> verify_passes(
|
||||||
llvm::cl::desc("Run the verifier after each transformation pass"),
|
llvm::cl::desc("Run the verifier after each transformation pass"),
|
||||||
llvm::cl::init(true));
|
llvm::cl::init(true));
|
||||||
|
|
||||||
|
static llvm::cl::opt<bool> allowUnregisteredDialects(
|
||||||
|
"allow-unregistered-dialect",
|
||||||
|
llvm::cl::desc("Allow operation with no registered dialects"),
|
||||||
|
llvm::cl::init(false));
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
mlir::registerDialect<mlir::AffineOpsDialect>();
|
mlir::registerDialect<mlir::AffineDialect>();
|
||||||
mlir::registerDialect<mlir::LLVM::LLVMDialect>();
|
mlir::registerDialect<mlir::LLVM::LLVMDialect>();
|
||||||
mlir::registerDialect<mlir::loop::LoopOpsDialect>();
|
mlir::registerDialect<mlir::loop::LoopOpsDialect>();
|
||||||
mlir::registerDialect<mlir::StandardOpsDialect>();
|
mlir::registerDialect<mlir::StandardOpsDialect>();
|
||||||
|
@ -74,5 +79,5 @@ int main(int argc, char **argv) {
|
||||||
|
|
||||||
return failed(mlir::MlirOptMain(output->os(), std::move(file), passPipeline,
|
return failed(mlir::MlirOptMain(output->os(), std::move(file), passPipeline,
|
||||||
split_input_file, verify_diagnostics,
|
split_input_file, verify_diagnostics,
|
||||||
verify_passes));
|
verify_passes, allowUnregisteredDialects));
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "mlir/Dialect/AffineOps/AffineOps.h"
|
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||||
#include "mlir/Dialect/StandardOps/Ops.h"
|
#include "mlir/Dialect/StandardOps/IR/Ops.h"
|
||||||
#include "mlir/Pass/Pass.h"
|
#include "mlir/Pass/Pass.h"
|
||||||
#include "mlir/Transforms/DialectConversion.h"
|
#include "mlir/Transforms/DialectConversion.h"
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ namespace {
|
||||||
struct KrnlIterateOpLowering : public OpRewritePattern<KrnlIterateOp> {
|
struct KrnlIterateOpLowering : public OpRewritePattern<KrnlIterateOp> {
|
||||||
using OpRewritePattern<KrnlIterateOp>::OpRewritePattern;
|
using OpRewritePattern<KrnlIterateOp>::OpRewritePattern;
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(KrnlIterateOp iterateOp,
|
LogicalResult matchAndRewrite(KrnlIterateOp iterateOp,
|
||||||
PatternRewriter &rewriter) const override {
|
PatternRewriter &rewriter) const override {
|
||||||
auto boundMapAttrs =
|
auto boundMapAttrs =
|
||||||
iterateOp.getAttrOfType<ArrayAttr>(KrnlIterateOp::getBoundsAttrName())
|
iterateOp.getAttrOfType<ArrayAttr>(KrnlIterateOp::getBoundsAttrName())
|
||||||
|
@ -81,7 +81,7 @@ struct KrnlIterateOpLowering : public OpRewritePattern<KrnlIterateOp> {
|
||||||
innermostForOp.region().end());
|
innermostForOp.region().end());
|
||||||
|
|
||||||
rewriter.eraseOp(iterateOp);
|
rewriter.eraseOp(iterateOp);
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -93,10 +93,10 @@ class KrnlTerminatorLowering : public OpRewritePattern<KrnlTerminatorOp> {
|
||||||
public:
|
public:
|
||||||
using OpRewritePattern<KrnlTerminatorOp>::OpRewritePattern;
|
using OpRewritePattern<KrnlTerminatorOp>::OpRewritePattern;
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(KrnlTerminatorOp op,
|
LogicalResult matchAndRewrite(KrnlTerminatorOp op,
|
||||||
PatternRewriter &rewriter) const override {
|
PatternRewriter &rewriter) const override {
|
||||||
rewriter.replaceOpWithNewOp<AffineTerminatorOp>(op);
|
rewriter.replaceOpWithNewOp<AffineTerminatorOp>(op);
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -108,10 +108,10 @@ class KrnlDefineLoopsLowering : public OpRewritePattern<KrnlDefineLoopsOp> {
|
||||||
public:
|
public:
|
||||||
using OpRewritePattern<KrnlDefineLoopsOp>::OpRewritePattern;
|
using OpRewritePattern<KrnlDefineLoopsOp>::OpRewritePattern;
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(KrnlDefineLoopsOp op,
|
LogicalResult matchAndRewrite(KrnlDefineLoopsOp op,
|
||||||
PatternRewriter &rewriter) const override {
|
PatternRewriter &rewriter) const override {
|
||||||
rewriter.eraseOp(op);
|
rewriter.eraseOp(op);
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -123,10 +123,10 @@ class KrnlOptimizeLoopsLowering : public OpRewritePattern<KrnlOptimizeLoopsOp> {
|
||||||
public:
|
public:
|
||||||
using OpRewritePattern<KrnlOptimizeLoopsOp>::OpRewritePattern;
|
using OpRewritePattern<KrnlOptimizeLoopsOp>::OpRewritePattern;
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(KrnlOptimizeLoopsOp op,
|
LogicalResult matchAndRewrite(KrnlOptimizeLoopsOp op,
|
||||||
PatternRewriter &rewriter) const override {
|
PatternRewriter &rewriter) const override {
|
||||||
rewriter.eraseOp(op);
|
rewriter.eraseOp(op);
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ void KrnlToAffineLoweringPass::runOnFunction() {
|
||||||
|
|
||||||
ConversionTarget target(getContext());
|
ConversionTarget target(getContext());
|
||||||
|
|
||||||
target.addLegalDialect<AffineOpsDialect, StandardOpsDialect>();
|
target.addLegalDialect<AffineDialect, StandardOpsDialect>();
|
||||||
// We expect IR to be free of Krnl Dialect Ops.
|
// We expect IR to be free of Krnl Dialect Ops.
|
||||||
target.addIllegalDialect<KrnlOpsDialect>();
|
target.addIllegalDialect<KrnlOpsDialect>();
|
||||||
target.addLegalOp<KrnlMemcpyOp>();
|
target.addLegalOp<KrnlMemcpyOp>();
|
||||||
|
|
|
@ -12,10 +12,10 @@
|
||||||
#include "mlir/Conversion/LoopToStandard/ConvertLoopToStandard.h"
|
#include "mlir/Conversion/LoopToStandard/ConvertLoopToStandard.h"
|
||||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
|
||||||
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
|
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
|
||||||
#include "mlir/Dialect/AffineOps/AffineOps.h"
|
#include "mlir/Dialect/Affine/IR/AffineOps.h"
|
||||||
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
|
||||||
#include "mlir/Dialect/LoopOps/LoopOps.h"
|
#include "mlir/Dialect/LoopOps/LoopOps.h"
|
||||||
#include "mlir/Dialect/StandardOps/Ops.h"
|
#include "mlir/Dialect/StandardOps/IR/Ops.h"
|
||||||
#include "mlir/Pass/Pass.h"
|
#include "mlir/Pass/Pass.h"
|
||||||
#include "mlir/Transforms/DialectConversion.h"
|
#include "mlir/Transforms/DialectConversion.h"
|
||||||
#include "llvm/ADT/Sequence.h"
|
#include "llvm/ADT/Sequence.h"
|
||||||
|
@ -69,7 +69,7 @@ public:
|
||||||
explicit KrnlMemcpyOpLowering(MLIRContext *context)
|
explicit KrnlMemcpyOpLowering(MLIRContext *context)
|
||||||
: ConversionPattern(KrnlMemcpyOp::getOperationName(), 1, context) {}
|
: ConversionPattern(KrnlMemcpyOp::getOperationName(), 1, context) {}
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
LogicalResult matchAndRewrite(Operation *op, ArrayRef<Value> operands,
|
||||||
ConversionPatternRewriter &rewriter) const override {
|
ConversionPatternRewriter &rewriter) const override {
|
||||||
auto *context = op->getContext();
|
auto *context = op->getContext();
|
||||||
KrnlMemcpyOpOperandAdaptor operandAdaptor(operands);
|
KrnlMemcpyOpOperandAdaptor operandAdaptor(operands);
|
||||||
|
@ -118,7 +118,7 @@ public:
|
||||||
int64Size, isVolatile}));
|
int64Size, isVolatile}));
|
||||||
|
|
||||||
rewriter.eraseOp(op);
|
rewriter.eraseOp(op);
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -186,7 +186,7 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
PatternMatchResult matchAndRewrite(
|
LogicalResult matchAndRewrite(
|
||||||
KrnlEntryPointOp op, PatternRewriter &rewriter) const override {
|
KrnlEntryPointOp op, PatternRewriter &rewriter) const override {
|
||||||
|
|
||||||
auto *llvmDialect =
|
auto *llvmDialect =
|
||||||
|
@ -301,7 +301,7 @@ public:
|
||||||
// Return wrapped output.
|
// Return wrapped output.
|
||||||
rewriter.create<LLVM::ReturnOp>(
|
rewriter.create<LLVM::ReturnOp>(
|
||||||
loc, SmallVector<Value, 1>({wrappedOutput}));
|
loc, SmallVector<Value, 1>({wrappedOutput}));
|
||||||
return matchSuccess();
|
return success();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "mlir/Dialect/StandardOps/Ops.h"
|
#include "mlir/Dialect/StandardOps/IR/Ops.h"
|
||||||
#include "mlir/IR/Builders.h"
|
#include "mlir/IR/Builders.h"
|
||||||
#include "mlir/IR/PatternMatch.h"
|
#include "mlir/IR/PatternMatch.h"
|
||||||
#include "mlir/Pass/Pass.h"
|
#include "mlir/Pass/Pass.h"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
git clone https://github.com/llvm/llvm-project.git
|
git clone https://github.com/llvm/llvm-project.git
|
||||||
# Check out a specific branch that is known to work with ONNX MLIR.
|
# Check out a specific branch that is known to work with ONNX MLIR.
|
||||||
cd llvm-project && git checkout 076475713c236081a3247a53e9dbab9043c3eac2 && cd ..
|
cd llvm-project && git checkout 07e462526d0cbae40b320e1a4307ce11e197fb0a && cd ..
|
||||||
mkdir llvm-project/build
|
mkdir llvm-project/build
|
||||||
cd llvm-project/build
|
cd llvm-project/build
|
||||||
cmake -G Ninja ../llvm \
|
cmake -G Ninja ../llvm \
|
||||||
|
|
Loading…
Reference in New Issue