13#include "mlir/Pass/PassManager.h"
14#include "mlir/Transforms/Passes.h"
23 OpPassManager &pm,
const RandomizationPipelineOptions &options) {
25 ElaborationPassOptions passOptions;
26 passOptions.seed = options.seed;
27 pm.addPass(rtg::createElaborationPass(passOptions));
29 pm.addPass(rtg::createInlineSequencesPass());
30 pm.addPass(createSymbolDCEPass());
32 auto &testPm = pm.nest<rtg::TestOp>();
33 MemoryAllocationPassOptions passOptions;
34 passOptions.useImmediates = options.memoriesAsImmediates;
35 testPm.addPass(rtg::createMemoryAllocationPass(passOptions));
36 testPm.addPass(rtg::createLowerUniqueLabelsPass());
37 testPm.addPass(rtg::createLinearScanRegisterAllocationPass());
40 auto &anyPm = pm.nestAny();
41 anyPm.addPass(mlir::createCSEPass());
44 pm.addPass(rtg::createUniqueValidateOpsPass());
52 PassPipelineRegistration<RandomizationPipelineOptions>(
53 "rtg-randomization-pipeline",
54 "The default pipeline for randomizing RTG tests.",
static std::unique_ptr< Pass > createSimpleCanonicalizerPass()
Create a simple canonicalizer pass.
void registerPipelines()
Registers all pipelines for the rtg dialect.
void buildRandomizationPipeline(mlir::OpPassManager &pm, const RandomizationPipelineOptions &options)
Adds the randomization pipeline to the OpPassManager.