29 pm.
addNestedPass<func::FuncOp>(createLinalgGeneralizeNamedOpsPass());
30 pm.
addNestedPass<func::FuncOp>(createLinalgElementwiseOpFusionPass());
35 options.testBufferizationAnalysisOnly),
40 options.force32BitVectorIndices,
42 options.sparsificationOptions().sparseEmitStrategy,
43 options.sparsificationOptions().parallelizationStrategy));
46 if (
options.testBufferizationAnalysisOnly)
54 const bool gpuCodegen =
options.gpuTriple.hasValue();
58 pm.
addNestedPass<gpu::GPUModuleOp>(createSCFToControlFlowPass());
59 pm.
addNestedPass<gpu::GPUModuleOp>(createConvertGpuOpsToNVVMOps());
66 pm.
addNestedPass<func::FuncOp>(createConvertLinalgToLoopsPass());
71 pm.
addPass(createLowerAffinePass());
73 createConvertVectorToLLVMPass(
options.convertVectorToLLVMOptions()));
74 pm.
addPass(createFinalizeMemRefToLLVMConversionPass());
75 pm.
addNestedPass<func::FuncOp>(createConvertComplexToStandardPass());
76 pm.
addNestedPass<func::FuncOp>(arith::createArithExpandOpsPass());
77 pm.
addNestedPass<func::FuncOp>(createConvertMathToLLVMPass());
78 pm.
addPass(createConvertMathToLibmPass());
79 pm.
addPass(createConvertComplexToLibm());
81 createConvertVectorToLLVMPass(
options.convertVectorToLLVMOptions()));
82 pm.
addPass(createConvertComplexToLLVMPass());
84 createConvertVectorToLLVMPass(
options.convertVectorToLLVMOptions()));
85 pm.
addPass(createConvertFuncToLLVMPass());
86 pm.
addPass(createArithToLLVMConversionPass());
87 pm.
addPass(createConvertControlFlowToLLVMPass());
91 GpuNVVMAttachTargetOptions nvvmTargetOptions;
92 nvvmTargetOptions.triple =
options.gpuTriple;
93 nvvmTargetOptions.chip =
options.gpuChip;
94 nvvmTargetOptions.features =
options.gpuFeatures;
95 pm.
addPass(createGpuNVVMAttachTarget(nvvmTargetOptions));
96 pm.
addPass(createGpuToLLVMConversionPass());
97 GpuModuleToBinaryPassOptions gpuModuleToBinaryPassOptions;
98 gpuModuleToBinaryPassOptions.compilationTarget =
options.gpuFormat;
99 pm.
addPass(createGpuModuleToBinaryPass(gpuModuleToBinaryPassOptions));
103 pm.
addPass(createUBToLLVMConversionPass());
106 pm.
addPass(createReconcileUnrealizedCastsPass());
116 "The standard pipeline for taking sparsity-agnostic IR using the"
117 " sparse-tensor type, and lowering it to LLVM IR with concrete"
118 " representations and algorithms for sparse tensors.",
static llvm::ManagedStatic< PassManagerOptions > options
This class represents a pass manager that runs passes on either a specific operation type,...
void addPass(std::unique_ptr< Pass > pass)
Add the given pass to this pass manager.
void addNestedPass(std::unique_ptr< Pass > pass)
Add the given pass to a nested pass manager for the given operation kind OpT.
std::unique_ptr< Pass > createExpandStridedMetadataPass()
Creates an operation pass to expand some memref operation into easier to reason about operations.
std::unique_ptr< Pass > createExpandReallocPass(bool emitDeallocs=true)
Creates an operation pass to expand memref.realloc operations into their components.
void buildSparsifier(OpPassManager &pm, const SparsifierOptions &options)
Adds the "sparsifier" pipeline to the OpPassManager.
void registerSparseTensorPipelines()
Registers all pipelines for the sparse_tensor dialect.
std::unique_ptr< Pass > createSparseGPUCodegenPass()
bufferization::OneShotBufferizationOptions getBufferizationOptionsForSparsification(bool analysisOnly)
std::unique_ptr< Pass > createStripDebugInfoPass()
Creates a pass to strip debug information from a function.
std::unique_ptr< Pass > createSparsificationAndBufferizationPass()
std::unique_ptr< Pass > createStorageSpecifierToLLVMPass()
std::unique_ptr< Pass > createCanonicalizerPass()
Creates an instance of the Canonicalizer pass, configured with default settings (which can be overrid...
std::unique_ptr< Pass > createConvertVectorToSCFPass(const VectorTransferToSCFOptions &options=VectorTransferToSCFOptions())
Create a pass to convert a subset of vector ops to SCF.
PassPipelineRegistration provides a global initializer that registers a Pass pipeline builder routine...
Options for the "sparsifier" pipeline.