mlir
mlir copied to clipboard
[spirv] [tracking] SPIR-V dialect
(NOTE: This is not updated anymore. Please see https://mlir.llvm.org/docs/Dialects/SPIR-V/ for supported features.)
This is a tracking bug for completing the SPIR-V dialect. It will be periodically updated to provide the current status. Anybody interested in helping is very welcome to pick up tasks here! :)
Core infrastructure
- [x] Dialect skeleton (scaffolding, registration, etc.)
- [x] Serialization & deserialization skeleton
- [x] Script to query SPIR-V HLSL and JSON spec to auto-generate SPIR-V dialect op definitions
- [x] TableGen backend to auto-generate SPIR-V (de)serialization logic
- [ ] Version/extension/capability support
- [ ] Extension library organization
For Vulkan compute
- [x] Module structure
- Types
- [ ] Scalar types
- [x] void, bool, Int, float
- [ ] Integer signedness
- [x] Vector
- [x] (Runtime) Array
- [x] Struct
- [ ] Scalar types
- Operations
- [x] Constants
- [ ] Spec constants
- [x] Scalar spec constants
- [ ] Composite spec constants
- [x] Variables
- [x] Arithmetic ops
- [x] Bit ops (#173)
- [x] Logical ops
- [x] Barrier ops
- [x] Conversion ops (#174)
- [ ] Composite ops
- [ ] Atomic ops
- [x] GLSL ops
- Control flow
- [x] Structured selection
- [x] Structured loop
- [x] Phi
- [ ] Switch
For Vulkan graphics
[TODO]
For OpenCL
[TODO]