Skip to content

Development Optimization Passes List

This is an automatically generated list of all internal xls developtment optimization passes available with the default opt_main. Normal optimization passes may be found here. This is generated automatically based on comments in the header files.

Warning: These passes are mostly intended for debugging and development use cases by the XLS development team and allow for the manipulation of ir files in ways that may not be desirable for general optimization use.

If the opt level is set below 'Min opt level' the pass will act as a no-op.

If the opt level is set above 'Cap opt level' the pass (or passes within the compound pass) will be executed with the opt level capped to the specified value.

Warning: Many of these passes have descriptions generated by the Gemini LLM and may not accurately reflect the behavior of the passes. As time goes on manual verification or editing of the pass descriptions may be done to improve accuracy.

assert_and_cover_removal - Assert and cover removal

Header

decompose_dataflow - Decompose dataflow

Decompose and flatten all compound data type dataflow. This replaces all array and tuple operations with operations on base values except directly around externally visible values.

This pass is meant for testing and measurement.

Header

literalize_zero_bits - Literalize zero bits

Header

proc_state_legalization_shim - Proc State Legalization Pass

Compatibility shim to use the scheduling pass 'ProcStateLegalizationPass' in the optimization pass pipeline for modernizing procs.

Header

remove_identifiers_unsafe - UNSAFE: Remove all identifiers

A pass version of 'remove_identifers_main'. Running this pass will rewrite the package to remove the names of all functions, procs, nodes, channels, etc.

This should only be used while investigating optimizer behavior using the ir-visualizer or other tools.

Warning

This pass does not preserve externally visible names. Once run on a design the various io-constraint and other configs which rely on naming pieces of the design will not work. This pass is only for dev/ investigatory purposes.

Note

This pass does not preserve the id number of nodes.

Header

remove_one_hot_sel - One Hot Select Removal Pass

Pass which replaces OneHotSelects with equivalent Selects without regard to profitability concerns. This pass is meant for investigation and analysis use only and should not be used for normal optimization pipelines.

To avoid extreme proliferation of nodes, we only translate OneHotSelects with a selector bitwidth <= 16.

Header

to_zero_ext - DebugPass: To ZeroExt Pass

Converts any canonicalized zero-exts back from concat(zero, ...) to zero_ext since it generally makes for easier to read/visualize graphs. This pass is not meant to be used as an optimization pass at all.

Header