Repository navigation
Tags
Tags
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
[NFC] Expose node-scoped select merging and PrioritySelect duplicate … …case merging. Extract MergeSelectNode from SelectMergingPass and SimplifyPrioritySelectDuplicateCases from SelectSimplificationPass so callers that construct selects incrementally can invoke them on individual nodes without running a full function pass. PiperOrigin-RevId: 1005990194
Optimization to map updates in RemoveDuplicateParams() PiperOrigin-RevId: 1004361643
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
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
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
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 th 7707 e pass to use a union of StatelessQueryEngine and PartialInfoQueryEngine (with cached state element information). PiperOrigin-RevId: 1000541029
Integrate LLVM at llvm/llvm-project@2b35fb9283a4 Updates LLVM usage to match [2b35fb9283a4](llvm/llvm-project@2b35fb9) PiperOrigin-RevId: 999724350
[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
PreviousNext