brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.6 KiB · a427132 Raw
350 lines · cpp
1//===- mlir-opt.cpp - MLIR Optimizer Driver -------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// Main entry function for mlir-opt for when built as standalone binary.10//11//===----------------------------------------------------------------------===//12 13#include "mlir/Config/mlir-config.h"14#include "mlir/IR/AsmState.h"15#include "mlir/IR/Dialect.h"16#include "mlir/IR/MLIRContext.h"17#include "mlir/InitAllDialects.h"18#include "mlir/InitAllExtensions.h"19#include "mlir/InitAllPasses.h"20#include "mlir/Pass/Pass.h"21#include "mlir/Pass/PassManager.h"22#include "mlir/Support/FileUtilities.h"23#include "mlir/Target/LLVMIR/Dialect/All.h"24#include "mlir/Tools/mlir-opt/MlirOptMain.h"25#include "llvm/Support/CommandLine.h"26#include "llvm/Support/InitLLVM.h"27#include "llvm/Support/SourceMgr.h"28#include "llvm/Support/ToolOutputFile.h"29 30using namespace llvm;31using namespace mlir;32 33// Defined in the test directory, no public header.34namespace mlir {35void registerCloneTestPasses();36void registerConvertToTargetEnvPass();37void registerLazyLoadingTestPasses();38void registerLoopLikeInterfaceTestPasses();39void registerPassManagerTestPass();40void registerPrintSpirvAvailabilityPass();41void registerRegionTestPasses();42void registerPrintTosaAvailabilityPass();43void registerShapeFunctionTestPasses();44void registerSideEffectTestPasses();45void registerSliceAnalysisTestPass();46void registerSymbolTestPasses();47void registerTestAffineAccessAnalysisPass();48void registerTestAffineDataCopyPass();49void registerTestAffineLoopUnswitchingPass();50void registerTestAffineReifyValueBoundsPass();51void registerTestAffineWalk();52void registerTestBytecodeRoundtripPasses();53void registerTestDecomposeAffineOpPass();54void registerTestFunc();55void registerTestGpuLoweringPasses();56void registerTestGpuMemoryPromotionPass();57void registerTestLoopPermutationPass();58void registerTestMatchers();59void registerTestOperationEqualPass();60void registerTestPreserveUseListOrders();61void registerTestPrintDefUsePass();62void registerTestPrintInvalidPass();63void registerTestPrintNestingPass();64void registerTestReducer();65void registerTestSpirvEntryPointABIPass();66void registerTestSpirvModuleCombinerPass();67void registerTestTraitsPass();68void registerTosaTestQuantUtilAPIPass();69void registerVectorizerTestPass();70 71namespace test {72void registerCommutativityUtils();73void registerConvertCallOpPass();74void registerConvertFuncOpPass();75void registerInliner();76void registerInlinerCallback();77void registerMemRefBoundCheck();78void registerPatternsTestPass();79void registerSimpleParametricTilingPass();80void registerTestAffineLoopParametricTilingPass();81void registerTestAliasAnalysisPass();82void registerTestArithEmulateWideIntPass();83void registerTestBuiltinAttributeInterfaces();84void registerTestBuiltinDistinctAttributes();85void registerTestCallGraphPass();86void registerTestCfAssertPass();87void registerTestCFGLoopInfoPass();88void registerTestComposeSubView();89void registerTestCompositePass();90void registerTestControlFlowSink();91void registerTestConvertToSPIRVPass();92void registerTestDataLayoutPropagation();93void registerTestDataLayoutQuery();94void registerTestDeadCodeAnalysisPass();95void registerTestDecomposeCallGraphTypes();96void registerTestDiagnosticsPass();97void registerTestDiagnosticsMetadataPass();98void registerTestDominancePass();99void registerTestDynamicPipelinePass();100void registerTestRemarkPass();101void registerTestEmulateNarrowTypePass();102void registerTestFooAnalysisPass();103void registerTestComposeSubView();104void registerTestMultiBuffering();105void registerTestIRVisitorsPass();106void registerTestGenericIRVisitorsPass();107void registerTestInterfaces();108void registerTestIRVisitorsPass();109void registerTestLastModifiedPass();110void registerTestLinalgDecomposeOps();111void registerTestLinalgDropUnitDims();112void registerTestLinalgElementwiseFusion();113void registerTestLinalgGreedyFusion();114void registerTestLinalgRankReduceContractionOps();115void registerTestLinalgTransforms();116void registerTestLivenessAnalysisPass();117void registerTestLivenessPass();118void registerTestLLVMLegalizePatternsPass();119void registerTestLoopFusion();120void registerTestLoopMappingPass();121void registerTestLoopUnrollingPass();122void registerTestLowerToArmSME();123void registerTestLowerToLLVM();124void registerTestMakeIsolatedFromAbovePass();125void registerTestMatchReductionPass();126void registerTestMathAlgebraicSimplificationPass();127void registerTestMathPolynomialApproximationPass();128void registerTestMathToVCIXPass();129void registerTestIrdlTestDialectConversionPass();130void registerTestMemRefDependenceCheck();131void registerTestMemRefStrideCalculation();132void registerTestMemRefToLLVMWithTransforms();133void registerTestReshardingPartitionPass();134void registerTestShardSimplificationsPass();135void registerTestMultiBuffering();136void registerTestNextAccessPass();137void registerTestNVGPULowerings();138void registerTestOpenACC();139void registerTestOneShotModuleBufferizePass();140void registerTestOpaqueLoc();141void registerTestOpLoweringPasses();142void registerTestPadFusion();143void registerTestParallelLoopUnrollingPass();144void registerTestRecursiveTypesPass();145void registerTestSCFUpliftWhileToFor();146void registerTestSCFUtilsPass();147void registerTestSCFWhileOpBuilderPass();148void registerTestSCFWrapInZeroTripCheckPasses();149void registerTestShapeMappingPass();150void registerTestSingleFold();151void registerTestSliceAnalysisPass();152void registerTestSPIRVCPURunnerPipeline();153void registerTestSPIRVFuncSignatureConversion();154void registerTestSPIRVVectorUnrolling();155void registerTestStridedMetadataRangeAnalysisPass();156void registerTestTensorCopyInsertionPass();157void registerTestTensorLikeAndBufferLikePass();158void registerTestTensorTransforms();159void registerTestTopologicalSortAnalysisPass();160void registerTestTransformDialectEraseSchedulePass();161void registerTestPassStateExtensionCommunication();162void registerTestVectorLowerings();163void registerTestVectorReductionToSPIRVDotProd();164void registerTestVulkanRunnerPipeline();165void registerTestWrittenToPass();166void registerTestXeGPULowerings();167#if MLIR_ENABLE_PDL_IN_PATTERNMATCH168void registerTestDialectConversionPasses();169void registerTestPDLByteCodePass();170void registerTestPDLLPasses();171#endif172} // namespace test173} // namespace mlir174 175namespace test {176void registerTestDialect(DialectRegistry &);177void registerTestDynDialect(DialectRegistry &);178void registerTestTilingInterfaceTransformDialectExtension(DialectRegistry &);179void registerTestTransformDialectExtension(DialectRegistry &);180void registerIrdlTestDialect(DialectRegistry &);181void registerTestTransformsTransformDialectExtension(DialectRegistry &);182} // namespace test183 184#ifdef MLIR_INCLUDE_TESTS185static void registerTestPasses() {186  registerCloneTestPasses();187  registerConvertToTargetEnvPass();188  registerPrintTosaAvailabilityPass();189  registerLazyLoadingTestPasses();190  registerLoopLikeInterfaceTestPasses();191  registerPassManagerTestPass();192  registerPrintSpirvAvailabilityPass();193  registerRegionTestPasses();194  registerShapeFunctionTestPasses();195  registerSideEffectTestPasses();196  registerSliceAnalysisTestPass();197  registerSymbolTestPasses();198  registerTestAffineAccessAnalysisPass();199  registerTestAffineDataCopyPass();200  registerTestAffineLoopUnswitchingPass();201  registerTestAffineReifyValueBoundsPass();202  registerTestAffineWalk();203  registerTestBytecodeRoundtripPasses();204  registerTestDecomposeAffineOpPass();205  registerTestFunc();206  registerTestGpuLoweringPasses();207  registerTestGpuMemoryPromotionPass();208  registerTestLoopPermutationPass();209  registerTestMatchers();210  registerTestOperationEqualPass();211  registerTestPreserveUseListOrders();212  registerTestPrintDefUsePass();213  registerTestPrintInvalidPass();214  registerTestPrintNestingPass();215  registerTestReducer();216  registerTestSpirvEntryPointABIPass();217  registerTestSpirvModuleCombinerPass();218  registerTestTraitsPass();219  registerTosaTestQuantUtilAPIPass();220  registerVectorizerTestPass();221 222  mlir::test::registerCommutativityUtils();223  mlir::test::registerConvertCallOpPass();224  mlir::test::registerConvertFuncOpPass();225  mlir::test::registerInliner();226  mlir::test::registerInlinerCallback();227  mlir::test::registerMemRefBoundCheck();228  mlir::test::registerPatternsTestPass();229  mlir::test::registerSimpleParametricTilingPass();230  mlir::test::registerTestAffineLoopParametricTilingPass();231  mlir::test::registerTestAliasAnalysisPass();232  mlir::test::registerTestArithEmulateWideIntPass();233  mlir::test::registerTestBuiltinAttributeInterfaces();234  mlir::test::registerTestBuiltinDistinctAttributes();235  mlir::test::registerTestCallGraphPass();236  mlir::test::registerTestCfAssertPass();237  mlir::test::registerTestCFGLoopInfoPass();238  mlir::test::registerTestComposeSubView();239  mlir::test::registerTestCompositePass();240  mlir::test::registerTestControlFlowSink();241  mlir::test::registerTestConvertToSPIRVPass();242  mlir::test::registerTestDataLayoutPropagation();243  mlir::test::registerTestDataLayoutQuery();244  mlir::test::registerTestDeadCodeAnalysisPass();245  mlir::test::registerTestDecomposeCallGraphTypes();246  mlir::test::registerTestDiagnosticsPass();247  mlir::test::registerTestDiagnosticsMetadataPass();248  mlir::test::registerTestDominancePass();249  mlir::test::registerTestDynamicPipelinePass();250  mlir::test::registerTestRemarkPass();251  mlir::test::registerTestEmulateNarrowTypePass();252  mlir::test::registerTestFooAnalysisPass();253  mlir::test::registerTestComposeSubView();254  mlir::test::registerTestMultiBuffering();255  mlir::test::registerTestIRVisitorsPass();256  mlir::test::registerTestGenericIRVisitorsPass();257  mlir::test::registerTestInterfaces();258  mlir::test::registerTestIrdlTestDialectConversionPass();259  mlir::test::registerTestIRVisitorsPass();260  mlir::test::registerTestLastModifiedPass();261  mlir::test::registerTestLinalgDecomposeOps();262  mlir::test::registerTestLinalgDropUnitDims();263  mlir::test::registerTestLinalgElementwiseFusion();264  mlir::test::registerTestLinalgGreedyFusion();265  mlir::test::registerTestLinalgRankReduceContractionOps();266  mlir::test::registerTestLinalgTransforms();267  mlir::test::registerTestLivenessAnalysisPass();268  mlir::test::registerTestLivenessPass();269  mlir::test::registerTestLLVMLegalizePatternsPass();270  mlir::test::registerTestLoopFusion();271  mlir::test::registerTestLoopMappingPass();272  mlir::test::registerTestLoopUnrollingPass();273  mlir::test::registerTestLowerToArmSME();274  mlir::test::registerTestLowerToLLVM();275  mlir::test::registerTestMakeIsolatedFromAbovePass();276  mlir::test::registerTestMatchReductionPass();277  mlir::test::registerTestMathAlgebraicSimplificationPass();278  mlir::test::registerTestMathPolynomialApproximationPass();279  mlir::test::registerTestMathToVCIXPass();280  mlir::test::registerTestMemRefDependenceCheck();281  mlir::test::registerTestMemRefStrideCalculation();282  mlir::test::registerTestMemRefToLLVMWithTransforms();283  mlir::test::registerTestReshardingPartitionPass();284  mlir::test::registerTestShardSimplificationsPass();285  mlir::test::registerTestMultiBuffering();286  mlir::test::registerTestNextAccessPass();287  mlir::test::registerTestNVGPULowerings();288  mlir::test::registerTestOpenACC();289  mlir::test::registerTestOneShotModuleBufferizePass();290  mlir::test::registerTestOpaqueLoc();291  mlir::test::registerTestOpLoweringPasses();292  mlir::test::registerTestPadFusion();293  mlir::test::registerTestParallelLoopUnrollingPass();294  mlir::test::registerTestRecursiveTypesPass();295  mlir::test::registerTestSCFUpliftWhileToFor();296  mlir::test::registerTestSCFUtilsPass();297  mlir::test::registerTestSCFWhileOpBuilderPass();298  mlir::test::registerTestSCFWrapInZeroTripCheckPasses();299  mlir::test::registerTestShapeMappingPass();300  mlir::test::registerTestSingleFold();301  mlir::test::registerTestSliceAnalysisPass();302  mlir::test::registerTestSPIRVCPURunnerPipeline();303  mlir::test::registerTestSPIRVFuncSignatureConversion();304  mlir::test::registerTestSPIRVVectorUnrolling();305  mlir::test::registerTestStridedMetadataRangeAnalysisPass();306  mlir::test::registerTestTensorCopyInsertionPass();307  mlir::test::registerTestTensorLikeAndBufferLikePass();308  mlir::test::registerTestTensorTransforms();309  mlir::test::registerTestTopologicalSortAnalysisPass();310  mlir::test::registerTestTransformDialectEraseSchedulePass();311  mlir::test::registerTestPassStateExtensionCommunication();312  mlir::test::registerTestVectorLowerings();313  mlir::test::registerTestVectorReductionToSPIRVDotProd();314  mlir::test::registerTestVulkanRunnerPipeline();315  mlir::test::registerTestWrittenToPass();316  mlir::test::registerTestXeGPULowerings();317#if MLIR_ENABLE_PDL_IN_PATTERNMATCH318  mlir::test::registerTestDialectConversionPasses();319  mlir::test::registerTestPDLByteCodePass();320  mlir::test::registerTestPDLLPasses();321#endif322}323#endif324 325int main(int argc, char **argv) {326  registerAllPasses();327#ifdef MLIR_INCLUDE_TESTS328  registerTestPasses();329#endif330  DialectRegistry registry;331  registerAllDialects(registry);332  registerAllExtensions(registry);333 334  // TODO: Remove this and the corresponding MLIRToLLVMIRTranslationRegistration335  // cmake dependency when a safe dialect interface registration mechanism is336  // implemented, see D157703 (and corresponding note on the declaration).337  registerAllGPUToLLVMIRTranslations(registry);338 339#ifdef MLIR_INCLUDE_TESTS340  ::test::registerIrdlTestDialect(registry);341  ::test::registerTestDialect(registry);342  ::test::registerTestDynDialect(registry);343  ::test::registerTestTilingInterfaceTransformDialectExtension(registry);344  ::test::registerTestTransformDialectExtension(registry);345  ::test::registerTestTransformsTransformDialectExtension(registry);346#endif347  return mlir::asMainReturnCode(mlir::MlirOptMain(348      argc, argv, "MLIR modular optimizer driver\n", registry));349}350