9#ifndef MLIR_DIALECT_GPU_PIPELINES_PASSES_H_
10#define MLIR_DIALECT_GPU_PIPELINES_PASSES_H_
21 *
this,
"index-bitwidth",
22 llvm::cl::desc(
"Bitwidth of the index type for the host (warning this "
23 "should be 64 until the GPU layering is fixed)"),
26 *
this,
"cubin-triple",
27 llvm::cl::desc(
"Triple to use to serialize to cubin."),
28 llvm::cl::init(
"nvptx64-nvidia-cuda")};
30 *
this,
"cubin-chip", llvm::cl::desc(
"Chip to use to serialize to cubin."),
31 llvm::cl::init(
"sm_75")};
33 *
this,
"cubin-features",
34 llvm::cl::desc(
"Features to use to serialize to cubin."),
37 *
this,
"cubin-format",
38 llvm::cl::desc(
"Compilation format to use to serialize to cubin."),
39 llvm::cl::init(
"fatbin")};
41 *
this,
"ptxas-cmd-options",
43 "Command line options to pass to the downstream compiler."),
47 llvm::cl::desc(
"Optimization level for NVVM compilation"),
50 *
this,
"kernel-bare-ptr-calling-convention",
52 "Whether to use the bareptr calling convention on the kernel "
53 "(warning this should be false until the GPU layering is fixed)"),
54 llvm::cl::init(
false)};
56 *
this,
"host-bare-ptr-calling-convention",
58 "Whether to use the bareptr calling convention on the host (warning "
59 "this should be false until the GPU layering is fixed)"),
60 llvm::cl::init(
false)};
62 *
this,
"allow-pattern-rollback",
63 llvm::cl::desc(
"Allow pattern rollback during dialect conversion"),
64 llvm::cl::init(
true)};
71 *
this,
"index-bitwidth",
72 llvm::cl::desc(
"Bitwidth of the index type for the host (warning this "
73 "should be 64 until the GPU layering is fixed)"),
75 PassOptions::Option<std::string>
arch{
78 "AMDGPU target architecture, as in Clang, with optional target-ID "
79 "modifiers (e.g. gfx942, gfx90a:xnack+, amdgpu9.42-amd-amdhsa, "
80 "amdgpu9.0a-amd-amdhsa--gfx90a:xnack-). Supersedes the separate "
81 "triple option this pipeline used to take. Required: AMDGCN "
82 "binaries are not forward-compatible across chip families.")};
83 PassOptions::Option<std::string>
chip{
84 *
this,
"chip", llvm::cl::desc(
"Deprecated alias for 'arch'."),
87 *
this,
"binary-format",
88 llvm::cl::desc(
"Final GPU binary emission format (e.g. fatbin, binary, "
89 "isa, llvm, offloading)."),
90 llvm::cl::init(
"fatbin")};
93 llvm::cl::desc(
"AMDHSA ABI version (e.g. \"500\", \"600\")."),
94 llvm::cl::init(
"600")};
97 llvm::cl::desc(
"Wavefront size (32 or 64) for targets that run at "
98 "either, or 0 to use the architecture's default."),
102 llvm::cl::desc(
"Optimization level for ROCDL/AMDGPU compilation."),
105 *
this,
"rocdl-cmd-options",
107 "Command line options to pass to the downstream AMDGPU compiler."),
110 *
this,
"kernel-bare-ptr-calling-convention",
111 llvm::cl::desc(
"Use bareptr calling convention for device kernels."),
112 llvm::cl::init(
false)};
114 *
this,
"host-bare-ptr-calling-convention",
115 llvm::cl::desc(
"Use bareptr calling convention for the host."),
116 llvm::cl::init(
false)};
123 *
this,
"xegpu-op-level",
124 llvm::cl::desc(
"Granularity of XeGPU operations to target: workgroup | "
126 llvm::cl::init(
"workgroup")};
128 *
this,
"enable-vector-to-xegpu",
129 llvm::cl::desc(
"Run convert-vector-to-xegpu so the pipeline can accept "
130 "vector dialect (one level above XeGPU) as entry IR"),
131 llvm::cl::init(
false)};
134 *
this,
"use-64bit-index",
135 llvm::cl::desc(
"Bitwidth of the index type (host & device)"),
136 llvm::cl::init(
true)};
138 *
this,
"kernel-bare-ptr-calling-convention",
139 llvm::cl::desc(
"Use bare pointer calling convention for device kernels"),
140 llvm::cl::init(
false)};
142 *
this,
"host-bare-ptr-calling-convention",
143 llvm::cl::desc(
"Use bare pointer calling convention for host launches"),
144 llvm::cl::init(
false)};
146 *
this,
"binary-format",
147 llvm::cl::desc(
"Final GPU binary emission format (e.g. fatbin). Valid "
148 "values are the set of values for the format argument of "
149 "-gpu-module-to-binary pass plus a special value: skip, "
150 "which skips invoking -gpu-module-to-binary pass."),
151 llvm::cl::init(
"fatbin")};
154 *
this,
"xevm-module-matcher",
155 llvm::cl::desc(
"Regex to match gpu.module names for XeVM target attach"),
158 *
this,
"zebin-triple", llvm::cl::desc(
"Target triple for XeVM codegen"),
159 llvm::cl::init(
"spirv64-unknown-unknown")};
161 *
this,
"zebin-chip", llvm::cl::desc(
"Target chip (e.g. pvc, bmg)"),
162 llvm::cl::init(
"bmg")};
165 llvm::cl::desc(
"Optimization level for attached target/codegen"),
168 *
this,
"igc-cmd-options",
169 llvm::cl::desc(
"Additional downstream compiler command line options"),
176 *
this,
"unsupported-source-types",
177 llvm::cl::desc(
"Floating-point source types without arithmetic/math "
178 "support on the target (e.g. bf16)"),
181 *
this,
"supported-target-types",
183 "Floating-point target type used to emulate the unsupported "
184 "source types via extf/truncf pairs"),
185 llvm::cl::init(
"f32")};
191 *
this,
"math-extend-extra-types",
193 "Extra floating-point types with math op support on the target, "
194 "in addition to f32 and f64 (maps to math-extend-to-supported-"
195 "types `extra-types`)"),
207 const GPUToNVVMPipelineOptions &
options);
213 const GPUToROCDLPipelineOptions &
options);
219 const GPUToXeVMPipelineOptions &
options);
static llvm::ManagedStatic< PassManagerOptions > options
This class represents a pass manager that runs passes on either a specific operation type,...
void registerGPUToNVVMPipeline()
Register all pipelines for the gpu dialect.
void registerGPUToXeVMPipeline()
void buildLowerToXeVMPassPipeline(OpPassManager &pm, const GPUToXeVMPipelineOptions &options)
Adds the GPU to XeVM pipeline to the given pass manager.
void registerGPUToROCDLPipeline()
void buildLowerToROCDLPassPipeline(OpPassManager &pm, const GPUToROCDLPipelineOptions &options)
Adds the GPU to ROCDL pipeline to the given pass manager.
void buildLowerToNVVMPassPipeline(OpPassManager &pm, const GPUToNVVMPipelineOptions &options)
Adds the GPU to NVVM pipeline to the given pass manager.
Include the generated interface declarations.
Options for the gpu to nvvm pipeline.
PassOptions::Option< std::string > cubinChip
PassOptions::Option< int > optLevel
PassOptions::Option< bool > allowPatternRollback
PassOptions::Option< bool > hostUseBarePtrCallConv
PassOptions::Option< std::string > cmdOptions
PassOptions::Option< std::string > cubinFeatures
PassOptions::Option< std::string > cubinFormat
PassOptions::Option< int64_t > indexBitWidth
PassOptions::Option< std::string > cubinTriple
PassOptions::Option< bool > kernelUseBarePtrCallConv
Options for the gpu to rocdl pipeline.
PassOptions::Option< std::string > chip
PassOptions::Option< unsigned > waveSize
PassOptions::Option< std::string > cmdOptions
PassOptions::Option< int64_t > indexBitWidth
PassOptions::Option< std::string > abiVersion
PassOptions::Option< bool > hostUseBarePtrCallConv
PassOptions::Option< bool > kernelUseBarePtrCallConv
PassOptions::Option< std::string > arch
PassOptions::Option< std::string > binaryFormat
PassOptions::Option< int > optLevel
PassOptions::Option< bool > hostBarePtrCallConv
PassOptions::ListOption< std::string > unsupportedSourceTypes
PassOptions::Option< unsigned > optLevel
PassOptions::ListOption< std::string > mathExtendExtraTypes
PassOptions::Option< std::string > xegpuOpLevel
PassOptions::Option< std::string > xevmModuleMatcher
PassOptions::Option< std::string > zebinTriple
PassOptions::Option< bool > kernelBarePtrCallConv
PassOptions::Option< std::string > binaryFormat
PassOptions::Option< std::string > supportedTargetTypes
PassOptions::Option< bool > enableVectorToXeGPU
PassOptions::Option< std::string > cmdOptions
PassOptions::Option< bool > use64bitIndex
PassOptions::Option< std::string > zebinChip