40 void buildPreGPUCommonPassPipeline(
 
   46     GpuXeVMAttachTargetOptions xevmTargetOptions;
 
   47     xevmTargetOptions.moduleMatcher = 
options.xevmModuleMatcher;
 
   48     xevmTargetOptions.triple = 
options.zebinTriple;
 
   49     xevmTargetOptions.chip = 
options.zebinChip;
 
   50     xevmTargetOptions.optLevel = 
options.optLevel;
 
   51     xevmTargetOptions.cmdOptions = 
options.cmdOptions;
 
   52     pm.
addPass(createGpuXeVMAttachTarget(xevmTargetOptions));
 
   54   pm.
addPass(createLowerAffinePass());
 
   63   if (
options.xegpuOpLevel == 
"workgroup") {
 
   64     pm.
addNestedPass<gpu::GPUModuleOp>(xegpu::createXeGPUWgToSgDistribute());
 
   66     pm.
addNestedPass<gpu::GPUModuleOp>(xegpu::createXeGPUBlocking());
 
   70   if (
options.xegpuOpLevel == 
"subgroup" ||
 
   71       options.xegpuOpLevel == 
"workgroup") {
 
   72     pm.
addNestedPass<gpu::GPUModuleOp>(xegpu::createXeGPUPropagateLayout());
 
   73     pm.
addNestedPass<gpu::GPUModuleOp>(xegpu::createXeGPUSubgroupDistribute());
 
   78     pm.
addNestedPass<gpu::GPUModuleOp>(xegpu::createXeGPUVectorLinearize());
 
   80   pm.
addNestedPass<gpu::GPUModuleOp>(createConvertMathToXeVM());
 
   81   pm.
addNestedPass<gpu::GPUModuleOp>(createConvertXeGPUToXeVMPass());
 
   83     ConvertGpuOpsToLLVMSPVOpsOptions gpuToLLVMSPVOptions;
 
   84     gpuToLLVMSPVOptions.use64bitIndex = 
options.use64bitIndex;
 
   86         createConvertGpuOpsToLLVMSPVOps(gpuToLLVMSPVOptions));
 
   89   pm.
addNestedPass<gpu::GPUModuleOp>(createReconcileUnrealizedCastsPass());
 
   95 void buildPostGPUCommonPassPipeline(
 
   98   pm.
addPass(createSCFToControlFlowPass());
 
   99   pm.
addPass(memref::createExpandStridedMetadataPass());
 
  101     GpuToLLVMConversionPassOptions gpuToLLVMOptions;
 
  102     gpuToLLVMOptions.hostBarePtrCallConv = 
options.hostBarePtrCallConv;
 
  103     gpuToLLVMOptions.kernelBarePtrCallConv = 
options.kernelBarePtrCallConv;
 
  104     pm.
addPass(createGpuToLLVMConversionPass(gpuToLLVMOptions));
 
  106   pm.
addPass(createLowerAffinePass());
 
  107   pm.
addPass(createConvertToLLVMPass());
 
  108   pm.
addPass(createReconcileUnrealizedCastsPass());
 
  111     GpuModuleToBinaryPassOptions gpuToModuleBinOptions;
 
  112     gpuToModuleBinOptions.compilationTarget = 
options.binaryFormat;
 
  113     gpuToModuleBinOptions.cmdOptions = 
options.cmdOptions;
 
  114     pm.
addPass(createGpuModuleToBinaryPass(gpuToModuleBinOptions));
 
  122   buildPreGPUCommonPassPipeline(pm, 
options);
 
  125   buildGPUPassPipeline(pm, 
options);
 
  128   buildPostGPUCommonPassPipeline(pm, 
options);
 
  133       "gpu-lower-to-xevm-pipeline",
 
  134       "The default GPU to XeVM lowering pipeline. It starts by lowering GPU " 
  136       "specified compilation target (default is fatbin) then lowers the host " 
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.
void registerGPUToXeVMPipeline()
void buildLowerToXeVMPassPipeline(OpPassManager &pm, const GPUToXeVMPipelineOptions &options)
Adds the GPU to XeVM pipeline to the given pass manager.
Include the generated interface declarations.
std::unique_ptr< Pass > createCSEPass()
Creates a pass to perform common sub expression elimination.
std::unique_ptr< Pass > createLoopInvariantCodeMotionPass()
Creates a loop invariant code motion pass that hoists loop invariant instructions out of the loop.
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...