Skip to content

Refactor Catalyst pass registering #1684

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
joeycarter opened this issue Apr 24, 2025 · 1 comment
Open

Refactor Catalyst pass registering #1684

joeycarter opened this issue Apr 24, 2025 · 1 comment

Comments

@joeycarter
Copy link
Contributor

Currently we register all Catalyst passes in the Catalyst/Transforms/RegisterAllPasses.cpp source file:

void catalyst::registerAllCatalystPasses()
{
mlir::registerPass(catalyst::createAddExceptionHandlingPass);
mlir::registerPass(catalyst::createAdjointLoweringPass);
mlir::registerPass(catalyst::createAnnotateFunctionPass);
mlir::registerPass(catalyst::createApplyTransformSequencePass);
mlir::registerPass(catalyst::createArrayListToMemRefPass);
mlir::registerPass(catalyst::createCatalystBufferizationPass);
mlir::registerPass(catalyst::createCatalystConversionPass);
mlir::registerPass(catalyst::createCopyGlobalMemRefPass);
mlir::registerPass(catalyst::createDetensorizeSCFPass);
mlir::registerPass(catalyst::createDisableAssertionPass);
mlir::registerPass(catalyst::createDisentangleCNOTPass);
mlir::registerPass(catalyst::createDisentangleSWAPPass);
mlir::registerPass(catalyst::createEmitCatalystPyInterfacePass);
mlir::registerPass(catalyst::createGEPInboundsPass);
mlir::registerPass(catalyst::createGradientBufferizationPass);
mlir::registerPass(catalyst::createGradientConversionPass);
mlir::registerPass(catalyst::createGradientPreprocessingPass);
mlir::registerPass(catalyst::createGradientPostprocessingPass);
mlir::registerPass(catalyst::createGradientLoweringPass);
mlir::registerPass(catalyst::createHloCustomCallLoweringPass);
mlir::registerPass(catalyst::createInlineNestedModulePass);
mlir::registerPass(catalyst::createIonConversionPass);
mlir::registerPass(catalyst::createMemrefCopyToLinalgCopyPass);
mlir::registerPass(catalyst::createMemrefToLLVMWithTBAAPass);
mlir::registerPass(catalyst::createMitigationLoweringPass);
mlir::registerPass(catalyst::createQnodeToAsyncLoweringPass);
mlir::registerPass(catalyst::createQuantumBufferizationPass);
mlir::registerPass(catalyst::createQuantumConversionPass);
mlir::registerPass(catalyst::createRegisterInactiveCallbackPass);
mlir::registerPass(catalyst::createRemoveChainedSelfInversePass);
mlir::registerPass(catalyst::createMergeRotationsPass);
mlir::registerPass(catalyst::createScatterLoweringPass);
mlir::registerPass(catalyst::createSplitMultipleTapesPass);
mlir::registerPass(catalyst::createTestPass);
mlir::registerPass(catalyst::createIonsDecompositionPass);
mlir::registerPass(catalyst::createQuantumToIonPass);
mlir::registerPass(catalyst::createLoopBoundaryOptimizationPass);
mlir::registerPass(catalyst::createCommuteCliffordTPPRPass);
mlir::registerPass(catalyst::createCliffordTToPPRPass);
mlir::registerPass(catalyst::createCommuteCliffordPastPPMPass);
}

However, as the number of passes and dialects continues to grow, the size of this file may become unwieldy and difficult to maintain. Can we find a better way to register these passes, for instance, next to the definition of the create*Pass functions?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants