8000 Releases · google/xls · GitHub
[go: up one dir, main page]

Skip to content

Releases

v0.0.0-10964-g1c4343b81

Choose a tag to compare

Update RemoveIdentifiersPass documentation comment.

Refresh the Gemini-generated C++ header comment in `remove_identifiers_pass.h` for `RemoveIdentifiersPass` to reflect its current implementation, and regenerate the pass documentation Markdown.

PiperOrigin-RevId: 1015241186

v0.0.0-10898-g8ddae8bf4

Choose a tag to compare

[NFC] Expose node-scoped select merging and PrioritySelect duplicate …

v0.0.0-10889-g904fe853a

Choose a tag to compare

Merge pull request #5190 from ecpeterson:codex/equality-arithmetic-ca…

v0.0.0-10882-gabf544fa7

Choose a tag to compare

Optimization to map updates in RemoveDuplicateParams()

PiperOrigin-RevId: 1004361643

v0.0.0-10875-g064c4c6c7

Choose a tag to compare

Use XLS_REGISTER_MODULE_INITIALIZER for codegen flags handler

Also change the macro to use an unquoted name since that lets us use the module initializer which gives tracing improvements.

Add small test for flag registry use.

PiperOrigin-RevId: 1003504320

v0.0.0-10865-g9c8e4110f

Choose a tag to compare

Declare the XLS[cc] __xls_memory size template parameter as int.

- C++ non-type template deduction requires an exact type match, so functions
  templated on int N failed to deduce N when Size was unsigned long long.
- Declaring Size as int in __xls_memory matches standard integer template
  parameters and memory aliases, allowing size deduction to succeed.
- For example, template <int N> T Read(const __xls_memory<T, N>& mem, int i)
  can now be called directly with __xls_memory<T, 32> without specifying N.

PiperOrigin-RevId: 1002706253

v0.0.0-10858-g50dffc886

Choose a tag to compare

Default split_next_value_selects to 4 in XLS library options.

Previously, the `opt_main` and `benchmark_main` CLI flags defaulted `--split_next_value_selects` to 4, whereas `OptimizationPassOptions::split_next_value_selects` and `OptOptions::split_next_value_selects` defaulted to `std::nullopt`. As a result, C++ library callers of `OptimizeIrForTop` and `RunOptimizationPassPipeline` using default options never split `sel` nodes feeding `next_value` (such as DSLX `if`/`else if` chains updating proc state), producing worse QoR than `opt_main` on identical IR.

- Introduce `kDefaultSplitNextValueSelects = 4` in `optimization_pass.h` and use it as the default in `OptimizationPassOptions`, `OptOptions`, `opt_flags.cc`, and `benchmark_main.cc` so the library and CLI defaults cannot drift.
- Update `next_value_optimization_pass_test`, `proc_state_bits_shattering_pass_test`, and `optimization_pass_pipeline_test` to exercise the new default while keeping explicit test coverage of the disabled (`std::nullopt` and `0`) paths.

PiperOrigin-RevId: 1001190592

v0.0.0-10845-g0b6472730

Choose a tag to compare

Optimize unsigned division when the divisor has a small value space.

In ArithSimplificationPass, use query engine intervals to identify unsigned division operations where the divisor can take on only a small number of possible values (or powers of two). Replace these divisions with a priority select lookup table over constant division implementations/shifts or a direct variable shift. Also updates the pass to use a union of StatelessQueryEngine and PartialInfoQueryEngine (with cached state element information).

PiperOrigin-RevId: 1000541029

v0.0.0-10836-gaa1b96cba

Choose a tag to compare

Integrate LLVM at llvm/llvm-project@2b35fb9283a4

Updates LLVM usage to match
[2b35fb9283a4](https://github.com/llvm/llvm-project/commit/2b35fb9283a44aae92cb72a41d077ee8de2be7ad)

PiperOrigin-RevId: 999724350

v0.0.0-10828-g406a74f76

Choose a tag to compare

[codegen 1.5] Don't repeat sends while a later stage is stalled.

In codegen 1.5, a send can complete while a stall further down the pipeline keeps its stage from advancing. The send then fires again whenever its channel is ready, duplicating outputs. One-shot logic prevents this, but we only added it to blocks with multiple streaming sends that weren't provably mutually exclusive. Now we also add it to any streaming send that a later stage can stall.

One-shot logic requires a reset, so blocks without one now get a clear error when they need it; previously, they failed IR verification or (if the bug manifested) silently duplicated sends.

PiperOrigin-RevId: 998956300
0