commit | 3483893ec12f24403bbbce9a6c9476ebb8c5dcd2 | [log] [tgz] |
---|---|---|
author | Han-Chung Wang <hanhan0912@gmail.com> | Mon Aug 12 10:09:25 2024 -0700 |
committer | GitHub <noreply@github.com> | Mon Aug 12 10:09:25 2024 -0700 |
tree | b47414847ea3da025e50a404a985a2a88da7fdef | |
parent | 49198a9e8c4c455be66cfc1fafc00bfdca780d99 [diff] |
[CodeGen][Common] Switch to new pass generation tablegen definitions. (#18166) This is not a NFC change because there are non-trivial changes in three passes. The rest are just switching to the new tablegen definition style. The revision applies few cleanups during refactoring, which includes: - Make all the passes have `iree-codegen-*` prefix. - Make filename match the pass name. - Switch namespaces to the single-line syntax. The non-trivial changes happen in `IREEComprehensiveBufferizePass`, `TileAndDistributeToWorkgroupsPass`, and `TransformDialectInterpreterPass`. In the `IREEComprehensiveBufferizePass`, the default allocationFn and memcpyFn values are no longer `std::nullopt`. They are the default functions that implemented in the file. It matches the behavior. The only difference is that it does not rely on users to pass `std::nullopt` to trigger the "default" behavior. Instead, it initialize the default value of the class members be them. This saves one level of nesting logic. In the `TileAndDistributeToWorkgroupsPass`, it switches to use `clEnumValN`. Without the change, the values in `.td` are magic numbers. Now we explicitly tie them to linalg::DistributionMethod. In `TransformDialectInterpreterPass`, it no longer uses `--iree-codegen-transform-dialect-library` to get the library path. Instead, users should use the predefined option (i.e., `library-file-name`) to specify the path. The old behavior was a hack because the pass itself should not access external variable if possible. The `--iree-codegen-transform-dialect-library` is still valid, but the lit test does not use it anymore. Because it is very tricky to teach tablegen to generate such behavior. --------- Signed-off-by: hanhanW <hanhan0912@gmail.com>
IREE (Intermediate Representation Execution Environment, pronounced as “eerie”) is an MLIR-based end-to-end compiler and runtime that lowers Machine Learning (ML) models to a unified IR that scales up to meet the needs of the datacenter and down to satisfy the constraints and special considerations of mobile and edge deployments.
See our website for project details, user guides, and instructions on building from source.
IREE is still in its early phase. We have settled down on the overarching infrastructure and are actively improving various software components as well as project logistics. It is still quite far from ready for everyday use and is made available without any support at the moment. With that said, we welcome any kind of feedback on any communication channels
Package | Release status |
---|---|
GitHub release (stable) | |
GitHub release (nightly) | |
Python iree-compiler | |
Python iree-runtime |
Host platform | Build status |
---|---|
Linux | |
macOS | |
Windows |
For the full list of workflows see https://iree.dev/developers/general/github-actions/.
See our website for more information.
Community meeting recordings: IREE YouTube channel
IREE is licensed under the terms of the Apache 2.0 License with LLVM Exceptions. See LICENSE for more information.