| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[mlir][spirv] Allow controlling subgroup size This commit extends the ResourceLimitsAttr to support specifying a minimal and maximal subgroup size, and extends EntryPointABIAttr to support specifying the requested subgroup size. This is possible now in Vulkan with the VK_EXT_subgroup_size_control extension. For OpenCL it's possible to use the SubgroupSize execution mode directly. Reviewed By: ThomasRaoux Differential Revision: https://reviews.llvm.org/D138962 | 3 年前 | |
[mlir][spirv] Add support for SPV_ARM_graph extension - part 3 (#156845) This is the third patch to add support for the SPV_ARM_graph SPIR-V extension to MLIR’s SPIR-V dialect. The extension introduces a new Graph abstraction for expressing dataflow computations over full resources. The part 3 implementation includes: - ABI lowering support for graph entry points via LowerABIAttributesPass. - Tests covering ABI handling. Graphs currently support only SPV_ARM_tensors, but are designed to generalize to other resource types, such as images. Spec: https://github.com/KhronosGroup/SPIRV-Registry/pull/346 RFC: https://discourse.llvm.org/t/rfc-add-support-for-spv-arm-graph-extension-in-mlir-spir-v-dialect/86947 --------- Signed-off-by: Davide Grohmann <davide.grohmann@arm.com> | 11 个月前 | |
[mlir][spirv] Fix LowerABIAttributesPass to generate EntryPoints for SPV1.4 (#118994) - Extend the SPIRV::LowerABIAttributesPass to detect when the target env is using SPIR-V ver >= 1.4, and in this case add all the functions' interface storage variables to the spirv.EntryPoint calls, as required by the spec of OpEntryPoint: "_Before version 1.4, the interface’s storage classes are limited to the Input and Output storage classes. Starting with version 1.4, the interface’s storage classes are all storage classes used in declaring all global variables referenced by the entry point’s call tree_." - Fix: generate the replacement ops (spirv.AddressOf and .AccessChain) in the order in which the associated variable appears in the function signature Signed-off-by: Fabrizio Indirli <Fabrizio.Indirli@arm.com> | 1 年前 | |
[mlir][spirv] Implement UMod canonicalization for vector constants (#141902) Closes #63174. Implements this transformation pattern, which is currently only applied to scalars, for vectors: %1 = "spirv.UMod"(%0, %CONST_32) : (i32, i32) -> i32 %2 = "spirv.UMod"(%1, %CONST_4) : (i32, i32) -> i32 to %1 = "spirv.UMod"(%0, %CONST_32) : (i32, i32) -> i32 %2 = "spirv.UMod"(%0, %CONST_4) : (i32, i32) -> i32 Additionally fixes and issue where patterns like this: %1 = "spirv.UMod"(%0, %CONST_4) : (i32, i32) -> i32 %2 = "spirv.UMod"(%1, %CONST_32) : (i32, i32) -> i32 were incorrectly canonicalized to: %1 = "spirv.UMod"(%0, %CONST_4) : (i32, i32) -> i32 %2 = "spirv.UMod"(%0, %CONST_32) : (i32, i32) -> i32 which is incorrect since (X % A) % B == (X % B) IFF A is a multiple of B, i.e., B divides A. | 1 年前 | |
[mlir][spirv] Remove invalid canon pattern for GL.Length (#164301) This rewrite does not preserve numerics: for example, we'd expect the maximum fp value to yield Inf instead of identity. GL.Length does not allow for fast math flags, so we need to remove this. Special cases (constants) can be handled via a folder if someone wants to implement one. | 9 个月前 | |
[mlir][spirv] Add definition for OpKill (#126554) Although the operation is deprecated in the most recent version of the SPIR-V spec, it is still used by older shaders, so having it defined is valuable and incurs negligible maintenance overhead, due to op simplicity. | 1 年前 | |
[mlir][spirv] Use assemblyFormat to define AccessChainOp assembly (#116545) see #73359 Declarative assemblyFormat ODS is more concise and requires less boilerplate than filling out cpp interfaces. Changes: - updates the AccessChainOp defined in SPIRVMemoryOps.td to use assemblyFormat. - Removes part print/parse from MemoryOps.cpp which is now generated by assemblyFormat - Updates tests to updated format | 1 年前 | |
[mlir][spirv] Add conversion pass to rewrite splat constant composite… (#148910) …s to replicated form This adds a new SPIR-V dialect-level conversion pass ConversionToReplicatedConstantCompositePass. This pass looks for splat composite spirv.Constant or spirv.SpecConstantComposite and rewrites them into spirv.EXT.ConstantCompositeReplicate or spirv.EXT.SpecConstantCompositeReplicate, respectively. --------- Signed-off-by: Mohammadreza Ameri Mahabadian <mohammadreza.amerimahabadian@arm.com> | 1 年前 | |
[mlir][SPIRV] Do not rewrite CompositeInsert for coopmatrix (#137837) When rewriting multiple CompositeInserts to CompositeConstruct, we need to know the number of elements of the result type. However, we cannot query the number of elements for cooperative matrix types. | 1 年前 | |
[mlir][spirv] Use assemblyFormat to define AccessChainOp assembly (#116545) see #73359 Declarative assemblyFormat ODS is more concise and requires less boilerplate than filling out cpp interfaces. Changes: - updates the AccessChainOp defined in SPIRVMemoryOps.td to use assemblyFormat. - Removes part print/parse from MemoryOps.cpp which is now generated by assemblyFormat - Updates tests to updated format | 1 年前 | |
[mlir][spirv] Rework type capability queries (#160113) * Fix infinite recursion with nested structs. * Drop ::getCapbilities function from derived types, so that there's only one entry point that queries type extensions. * Move all capability logic to a new helper class -- this way the ::getCapabilities functions can't diverge across concrete types and 'convenience types' like CompositeType. Fixes: #159963 | 10 个月前 | |
[mlir][spirv] Add IsInf/IsNan expansion for WebGPU (#86903) These non-finite math ops are supported by SPIR-V but not by WGSL. Assume finite floating point values and expand these ops into false. Previously, this worked by adding fast math flags during conversion from arith to spirv, but this got removed in https://github.com/llvm/llvm-project/pull/86578. Also do some misc cleanups in the surrounding code. | 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 年前 | ||
| 11 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 2 年前 |