Update README about the optimization library and tool.

This commit is contained in:
Lei Zhang 2016-09-02 10:15:47 -04:00
parent dcd7fed5af
commit 53c84333f0

View File

@ -8,10 +8,12 @@
The SPIR-V Tools project provides an API and commands for processing SPIR-V The SPIR-V Tools project provides an API and commands for processing SPIR-V
modules. modules.
The project includes an assembler, binary module parser, disassembler, and The project includes an assembler, binary module parser, disassembler,
validator for SPIR-V, all based on a common static library. The library contains validator, and optimizer for SPIR-V. Except for the optimizer, all are based
all of the implementation details, and is used in the standalone tools whilst on a common static library. The library contains all of the implementation
also enabling integration into other code bases directly. details, and is used in the standalone tools whilst also enabling integration
into other code bases directly. The optimizer implementation resides in its
own library.
The interfaces are still under development, and are expected to change. The interfaces are still under development, and are expected to change.
@ -55,6 +57,20 @@ See [`syntax.md`](syntax.md) for the assembly language syntax.
*Warning:* The validator is incomplete. *Warning:* The validator is incomplete.
### Optimizer
*Warning:* The optimizer is still under development and its library interface is
not yet published.
Currently supported optimizations:
* [Strip debug info](source/opt/strip_debug_info_pass.h)
* [Freeze spec constant](source/opt/freeze_spec_constant_value_pass.h)
* [Fold `OpSpecConstantOp` and `OpSpecConstantComposite`](source/opt/fold_spec_constant_op_and_composite_pass.h)
* [Unify constants](source/opt/unify_const_pass.h)
* [Eliminate dead constant](source/opt/eliminate_dead_constant_pass.h)
For the latest list, please refer to `spirv-opt --help`.
## Source code ## Source code
The SPIR-V Tools are maintained by members of the The Khronos Group Inc., The SPIR-V Tools are maintained by members of the The Khronos Group Inc.,
@ -108,7 +124,7 @@ The project uses [CMake][cmake] to generate platform-specific build
configurations. Assume that `<spirv-dir>` is the root directory of the checked configurations. Assume that `<spirv-dir>` is the root directory of the checked
out code: out code:
``` ```sh
cd <spirv-dir> cd <spirv-dir>
git clone https://github.com/KhronosGroup/SPIRV-Headers.git external/spirv-headers git clone https://github.com/KhronosGroup/SPIRV-Headers.git external/spirv-headers
git clone https://github.com/google/googletest.git external/googletest # optional git clone https://github.com/google/googletest.git external/googletest # optional
@ -125,8 +141,10 @@ development environment.
The following CMake options are supported: The following CMake options are supported:
* `SPIRV_COLOR_TERMINAL={ON|OFF}`, default `ON` - Enables color console output. * `SPIRV_COLOR_TERMINAL={ON|OFF}`, default `ON` - Enables color console output.
* `SPIRV_SKIP_TESTS={ON|OFF}`, default `OFF`- Build only the library and
the command line tools. This will prevent the tests from being built.
* `SPIRV_SKIP_EXECUTABLES={ON|OFF}`, default `OFF`- Build only the library, not * `SPIRV_SKIP_EXECUTABLES={ON|OFF}`, default `OFF`- Build only the library, not
the command line tools. This will also prevent the tests from being built. the command line tools and tests.
* `SPIRV_USE_SANITIZER=<sanitizer>`, default is no sanitizing - On UNIX * `SPIRV_USE_SANITIZER=<sanitizer>`, default is no sanitizing - On UNIX
platforms with an appropriate version of `clang` this option enables the use platforms with an appropriate version of `clang` this option enables the use
of the sanitizers documented [here][clang-sanitizers]. of the sanitizers documented [here][clang-sanitizers].