Releases: xdslproject/xdsl
v0.62.1
Changes
Dialects
- dialects: (riscv_snitch) add vfsubh and vfsubs @szerdick (#5821)
- dialects: (llvm) narrow ConstantOp value prop @sueszli (#5839)
- dialects: (llvm) add FSqrtOp @sueszli (#5823)
- dialects: (tensor) add init to FromElementsOp @superlopuh (#5826)
- dialects: (llvm) add BrOp @sueszli (#5822)
- dialects: (llvm) add FLogOp @sueszli (#5824)
- dialects: (llvm) add VectorFMaxOp @sueszli (#5825)
Transformations
- transformations: (convert-memref-to-ptr) factor out get_strides helper @sueszli (#5834)
- transformations: (convert-memref-to-ptr) handle non-zero offsets in reinterpret cast @sueszli (#5832)
- transformations: (expand_math_to_polynomials) add terms parameter to exp @szerdick (#5793)
Backend
- backend: (llvm) support forward references in convert_module @sueszli (#5848)
- backend: (llvm) add AddressOfOp conversion @sueszli (#5830)
- backend: preserve LLVM pointer address spaces in type conversion @sueszli (#5840)
- backend: (llvm) add target config to convert_module @sueszli (#5837)
- backend: add llvm.NullOp conversion @sueszli (#5827)
- backend: (llvm) add vector.FMAOp conversion @sueszli (#5828)
- backend: (riscv) handle dense constants @szerdick (#5799)
🗎 Documentation
- documentation: Fix print for listlang booleans in marimo notebooks @naveen-seth (#5841)
- documentation: updated reference to currently pinned LLVM version @hhkit (#5819)
Testing
- testing: add tests for marimo notebooks @superlopuh (#5843)
- testing: (test_lower_linalg_to_snitch) expand-math-to-polynomials to snitch pipeline @szerdick (#5798)
Dependencies
- dependencies: update astral-sh/setup-uv action to v8.1.0 @renovate[bot] (#5853)
- dependencies: update dependency ruff to v0.15.11 @renovate[bot] (#5816)
- dependencies: update astral-sh/setup-uv action to v8 @renovate[bot] (#5846)
- dependencies: update actions/upload-pages-artifact action to v5 @renovate[bot] (#5836)
- dependencies: lock file maintenance @renovate[bot] (#5835)
v0.62.0
Updates the corresponding LLVM version to v22, if you use xDSL to interoperate with MLIR, please be advised that you may need to update your MLIR version for seamless interop.
Changes
Dependencies
- dependencies: update ghcr.io/xdslproject/llvm docker tag to v22 @renovate[bot] (#5769)
v0.61.0
Some breaking changes to BitEnumAttribute in preparation for the upcoming bump of corresponding LLVM version to 22.
Changes
xDSL framework
- core: BitEnumAttribute with customizable delimiter value @hhkit (#5814)
- core: moved BitEnumAttribute from core to dialect.utils @hhkit (#5813)
- core: BitEnumAttribute to support alternate flag separators @hhkit (#5805)
- core: added parse_list to GenericParser with support for changing separator @hhkit (#5800)
Dialects
- dialects: (x86) add support for 32, 16, and 8-bit gp registers @superlopuh (#5811)
- dialects: (linalg) Make linalg.transpose into a structured op @Lishin1215 (#5812)
- dialects: (tensor) Add tensor.concat op @ed741 (#5790)
- dialects: (x86) add masked variants of vector move ops @superlopuh (#5807)
- dialects: (x86) wrap memory operands in assembly-like brackets @superlopuh (#5804)
Transformations
- transformations: (convert-pdl-to-pdl-interp) fix recursiondepth exception @jumerckx (#5809)
- transformations: (convert-pdl-to-pdl-interp) Put individual matchers in a single pdl_interp.func @jumerckx (#5803)
Backend
- backend: add register pools for aliasing registers, use in x86 @superlopuh (#5806)
Dependencies
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.10 @renovate[bot] (#5817)
- dependencies: update dependency marimo to >=0.23,<0.24 [security] @renovate[bot] (#5815)
- dependencies: lock file maintenance @renovate[bot] (#5810)
v0.60.0
Changes
- core: change BitEnumAttribute internal data to use frozenset @hhkit (#5796)
- backend: (riscv) propagate register width to move helpers @szerdick (#5779)
- dialects: (stencil) Add reduce and yield operations @Archii0 (#5784)
xDSL framework
- core: simplified parser implementation in BitEnumAttribute @hhkit (#5792)
- core: migrate xdsl-opt targets to Multiverse @superlopuh (#5702)
Frontend
- frontend: add support for bool/int/float literals @AlexanderViand (#5217)
Dialects
- dialects: (stim) add measurement and reset operations @cong-or (#5788)
- dialects: (stim) add two-qubit gate operations @cong-or (#5787)
- dialects: (DimOp) Add assembly format for dim @Lishin1215 (#5780)
- dialects: (stim) add single-qubit gate operations @cong-or (#5786)
- dialects: (stim) allow NAME regex to match single-character names @cong-or (#5785)
- dialects: (memref) alignment must be power of 2 @superlopuh (#5773)
- dialects: (memref) add custom syntax to memref.alloca @superlopuh (#5772)
- dialects: (riscv_snitch) add vfmulh @szerdick (#5770)
- dialects: (x86) remove LabelAttr and migrate to StringAttr @superlopuh (#5762)
- dialects: (x86) move non-jump ops to custom format @superlopuh (#5743)
Transformations
- transformations: (convert_linalg_to_loops) Lower linalg.index to loop variables @Lishin1215 (#5797)
- transformations: (convert_linalg_to_loops) Support dynamic loop bounds @Lishin1215 (#5768)
- transformations: (convert-arith-to-riscv-snitch) support vec mul @szerdick (#5771)
- transformations: (linalg) Only pass SSAValue to rewrite_linalg_structured_to_loops @Lishin1215 (#5774)
- transforms: (math) Convert exp to Taylor series without division @szerdick (#5764)
- transformations: (convert-pdl-to-pdl-interp) Add an option to lower patterns as individual matcher functions @jumerckx (#5765)
- transformations: (convert_linalg_to_loops) Extend convert-linalg-to-loops to lower LinalgStructuredOperation @Lishin1215 (#5756)
Backend
- backend: add RegisterNameSpec and add as optional arg to reg @superlopuh (#5738)
Interpreter
Continuous Integration
- CI: add git directory as safe for setuptools_vcs step in ci-mlir @superlopuh (#5781)
Dependencies
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.9 @renovate[bot] (#5802)
- dependencies: update dependency ruff to v0.15.9 @renovate[bot] (#5801)
- dependencies: update dependency marimo to >=0.22,<0.23 @renovate[bot] (#5795)
- dependencies: update dependency llvmlite to ~=0.47.0 @renovate[bot] (#5794)
- dependencies: lock file maintenance @renovate[bot] (#5789)
- dependencies: update dependency ruff to v0.15.8 @renovate[bot] (#5783)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.15.8 @renovate[bot] (#5751)
- dependencies: update actions/deploy-pages action to v5 @renovate[bot] (#5776)
- dependencies: update davidanson/markdownlint-cli2-action action to v23 @renovate[bot] (#5777)
- dependencies: lock file maintenance @renovate[bot] (#5766)
- dependencies: update dependency marimo to >=0.21,<0.22 @renovate[bot] (#5748)
- dependencies: update release-drafter/release-drafter action to v7 @renovate[bot] (#5761)
- dependencies: update j178/prek-action action to v2 @renovate[bot] (#5759)
- dependencies: update jakebailey/pyright-action action to v3 @renovate[bot] (#5760)
- dependencies: update davidanson/markdownlint-cli2-action action to v22 @renovate[bot] (#5753)
- dependencies: update dependency textual to v8 @renovate[bot] (#5755)
- dependencies: update dependency pytest to v9 @renovate[bot] (#5754)
- dependencies: update actions/checkout action to v6 @renovate[bot] (#5752)
- dependencies: update dependency ruff to v0.15.7 @renovate[bot] (#5750)
- dependencies: update dependency pyright to v1.1.408 @renovate[bot] (#5746)
- dependencies: update dependency immutabledict to <4.3.2 @renovate[bot] (#5747)
- dependencies: update dependency pytest-asyncio to v1.3.0 @renovate[bot] (#5749)
v0.59.0
This is a release with one change, which is fairly mechanical but required a bit of work to update the tests for. With this change, block arguments (which includes function arguments) don't insert a space after the SSAValue name and the :.
Before:
func.func @foo(%arg0 : i32, %arg1 : i64) {
After:
func.func @foo(%arg0: i32, %arg1: i64) {
Changes
xDSL framework
- core: don't insert space between block arguments and colons @superlopuh (#5745)
v0.58.0
Targets can now be added to Universes, meaning that xdsl-opt -t can be used to emit text by projects in the same Python environment.
Changes
xDSL framework
- core: add targets to multiverse @superlopuh (#5736)
- core: (Constraints) allow
of_lengthto take an int @alexarice (#5734) - core: Print locations for ops in custom assembly format @ZahidWakeel-synthara (#5724)
- core: Propagate block arg locations in func like ops @ZahidWakeel-synthara (#5732)
- core: add Target class and support in xdsl-opt @superlopuh (#5730)
- core: factor out arg spec logic from ModulePass @superlopuh (#5722)
Dialects
- dialects: (stencil) Deprecate get constructors @Archii0 (#5741)
- dialect: (riscv) add folding patterns for shift ops @osmanyasar05 (#5656)
- dialects: (x86) use
reghelper in x86 assembly printing @superlopuh (#5735) - dialects: (tensor) Fixed nofold attr to optional arg @liamsemeria (#5727)
- dialects: (linalg) Make get_indexing_maps return ArrayAttr and add get_default_indexing_maps @Lishin1215 (#5728)
- dialects: (llvm) add CondBr @sueszli (#5710)
- dialects: (llvm) Fix GEP index validation and MaskedStoreOp operand constraints @sueszli (#5729)
- dialects: (llvm) add FCmpOp @sueszli (#5706)
Transformations
- transformations: (linalg-generalize-named-ops) Generalize named ops to linalg.generic @Lishin1215 (#5726)
🐛 Bug Fixes
Dependencies
- dependencies: lock file maintenance @renovate[bot] (#5733)
Rewriting
v0.57.3
Changes
xDSL framework
- core: (interface) Add speculatability interface @mehrdad2m (#5725)
- core: Fix location in func block arguments @ZahidWakeel-synthara (#5690)
- core: handle self-replacement in replace_all_uses_with @saschabuehrle (#5723)
- core: rename PipelinePassSpec to ArgSpec for future frontends and targets @superlopuh (#5703)
- core: (Constraints) make 0-length ranges inferrable @alexarice (#5719)
- core: (Constraints) remove TypedAttributeConstraint @alexarice (#5718)
Dialects
- dialects: (linalg) NamedOperations are LinalgStructuredOperations @superlopuh (#5714)
- dialects: (linalg) expand LinalgStructuredOperation with missing fields @superlopuh (#5712)
- dialects: (linalg) rename LinalgOperation to LinalgStructuredOperation @superlopuh (#5711)
- dialects: (llvm) add SelectOp @sueszli (#5707)
Interpreter
- interpreter: (ematch) Add
run_dedup@jumerckx (#5715) - dialects: (linalg) add ElementwiseOperation ABC @superlopuh (#5704)
- interpreter: (ematch) Add
run_union@jumerckx (#5708) - interpreter: (linalg) abstract out generic op interpreter @superlopuh (#5713)
- interpreter: (ematch) add
get_or_create_class@jumerckx (#5709)
Dependencies
- dependencies: lock file maintenance @renovate[bot] (#5717)
Miscellaneous
- core: (Constraints) remove TypedAttributeConstraint @alexarice (#5718)
v0.57.2
Changes
xDSL framework
- core: factor parse_spec out of pass pipeline parsing @superlopuh (#5695)
- core: Fix location parsing to support nested location aliases @ZahidWakeel-synthara (#5693)
- core: Store & parse locations in Operation & Block arguments @ZahidWakeel-synthara (#5674)
Dialects
- dialects: (hw) allow nested arrays to be unpacked by array_get @JosseVanDelm (#5701)
- dialects: (riscv) add canonicalization pattern andi x, 0 -> 0 @Lishin1215 (#5694)
- dialects: (llvm) add FNegOp @sueszli (#5697)
- dialects: (llvm) add llvm.intr.masked.store op @sueszli (#5684)
- dialects: (llvm) add llvm.intr.fabs op @sueszli (#5683)
Transformations
- transformations: (convert-pdl-to-pdl-interp) Insert dedups for operations returned by native rewrites @jumerckx (#5699)
- transformations: (convert-memref-to-ptr) add CastOp and ReinterpretCastOp lowering @sueszli (#5692)
- transformations: add exp-to-taylor lowering pass @szerdick (#5606)
Interpreter
- interpreter: (ematch) Add
run_getclassresult(s) @jumerckx (#5688) - interpreter: (ematch) Add
run_get_class_representative@jumerckx (#5687) - interpreter: (ematch) Add
run_get_class_vals@jumerckx (#5686)
Testing
- testing: make multiverse test plugin editable and fix test @superlopuh (#5698)
- testing: add tests for newly added parse_spec function @superlopuh (#5696)
Dependencies
- dependencies: lock file maintenance @renovate[bot] (#5689)
v0.57.1
Some bug fixes and the beginning of location support in xDSL.
Changes
- dialects: (memref) Add ViewOp @HendrikKlug-synthara (#5682)
Dialects
- dialects: (builtin) add standard MLIR locations @aniragil (#5680)
- dialects: (tensor) Added missing traits @liamsemeria (#5679)
- dialects: (tensor) Added PadOp and YieldOp @liamsemeria (#5669)
- dialects: (bigint) add
bigint.truncate_to_intop @AlexanderViand (#5671) - dialects: (bigint) add constant op @AlexanderViand (#5670)
- dialects: (py) Foundations for a Python source dialect @Fidget-Spinner (#5637)
- dialects: (comb) Fix custom parsing for icmp operation @JosseVanDelm (#5668)
🗎 Documentation
Testing
- testing: add tests for ValueErrors and improve error message @shuaiting-li (#5672)
Dependencies
- dependencies: lock file maintenance @renovate[bot] (#5673)
v0.57.0
We moved our docs website! Now no longer on readthedocs, please navigate to docs.xdsl.dev.
Some breaking changes in this release:
ConstantLike is a trait again, for constant folding in the greedy rewriter please declare both the ConstantLike trait and implement HasFolderInterface.
The RISC-V dialect is in the process of getting split into three dialects, rv32 and rv64 ops where the op definitions have to be different for the 32- and 64-bit variants, and riscv for all functionality that is shared.
Deprecations:
IntegerAttr.from_int_and_width is deprecated in favor of the init.
Changes
- dialects: (comb) Fix custom printing and parsing @JosseVanDelm (#5658)
- Move docs to docs.xdsl.dev @tobiasgrosser (#5630)
- ci: fix build directory of mkdocs @tobiasgrosser (#5629)
- ci: put our docs on github pages @tobiasgrosser (#5628)
- core: Fix detach_block to clear block pointers @wulu007 (#5627)
xDSL framework
- core: deprecate IntegerAttr.from_int_and_width @superlopuh (#5665)
- core: add type annotations to delimited helpers @superlopuh (#5662)
- core: use ConstantLike + HasFolderInterface for constant op results @superlopuh (#5660)
- core: Complete Use cleanup in drop_all_references @wulu007 (#5639)
- core: factor out parsing/printing helpers for func outputs @sueszli (#5636)
Frontend
Dialects
- dialects: (llvm) Fix llvm.func op custom printing/parsing @JosseVanDelm (#5666)
- dialects: (riscv) remove label immediate for shift constants @superlopuh (#5664)
- dialects: (hw) Add hw.constant op @JosseVanDelm (#5659)
- dialect: (rv64) add rv64.GetRegisterOp @osmanyasar05 (#5657)
- dialects: (riscv) constant folding patterns for shift operations @osmanyasar05 (#5654)
- dialects: (riscv) make
get_constant_valueagnostic @osmanyasar05 (#5648) - dialects: (riscv) canonicalization pattern added ( (x^a)^a -> x ) @shuaiting-li (#5653)
- dialects: (riscv) add canonicalization pattern (x | 0 -> x) @monkberry71 (#5594)
- dialects: (llvm) Implement custom format for FuncOp @sueszli (#5588)
- dialects: (llvm) set default visibility and support extra attrs in FuncOp @sueszli (#5647)
- dialects: (riscv) get_constant_value canonicalization @osmanyasar05 (#5643)
- dialects: (riscv) add riscv32 and riscv64 load immediate instruction @osmanyasar05 (#5621)
- dialects: (llvm): add result attributes to FuncOp @sueszli (#5640)
- dialects: (llvm) PyTests for full coverage @sueszli (#5603)
- dialects: (riscv) split into multiple files @superlopuh (#5622)
- dialects: (llvm) deprecate LLVMArrayType constructor helper @superlopuh (#5623)
- dialects: (pdl_interp) Add default empty region to foreach constructor @jumerckx (#5609)
- dialects: (x86) drop
() ->in get register ops @superlopuh (#5614) - dialects: (hw) Add bitcast op @AntonLydike (#5611)
- dialects: (ematch) Add ematch dialect definitions @jumerckx (#5596)
- dialects: (llvm) Implement custom format for llvm.return @sueszli (#5602)
- dialects: (x86) standardise signedness of immediates @superlopuh (#5592)
- dialects: (riscv) replace ImmAttr types with integer types @superlopuh (#5593)
Transformations
- transformations: (convert-pdl-to-pdl-interp) Add eqsat instrumentation @jumerckx (#5585)
- transformations: (apply-pdl-interp) Defer rewrite application @jumerckx (#5646)
- transforms: (approximate-math-with-bitcast) Add support for math.log1p @AntonLydike (#5619)
- transform: (approximate-math-with-bitcast) Pass fastmath flags through @AntonLydike (#5615)
- transformations: (approximate-math-with-bitcast) Add base pass @AntonLydike (#5607)
Backend
- backend: (llvm) convert simple memory ops @sueszli (#5578)
- backend: raise error for infinite register clash during class definition @superlopuh (#5661)
- backend: (llvm) convert casting operations @sueszli (#5576)
- backend: (llvm) convert GEP @sueszli (#5579)
- backend: (llvm) convert func call @sueszli (#5580)
- backend: (llvm) convert int comparison operations @sueszli (#5577)
- backend: (llvm) convert binary op flags @sueszli (#5582)
- backend: (riscv) map infinite registers to physical registers @anominos (#5590)
Interpreter
- interpreter: (pdl_interp) Add interpreter method for foreach @jumerckx (#5608)
- interpreter: (pdl_interp) Remove unnecessary assert @jumerckx (#5610)
- interpreter: (riscv) Convert to staticmethods @osmanyasar05 (#5612)
🗎 Documentation
- documentation: expand CONTRIBUTING guide @sueszli (#5635)
- documentation: remove references to readthedocs @superlopuh (#5631)
- documentation: Create CONTRIBUTING.md @sueszli (#5604)
- documentation: Fix Parameterized spelling and doc string. @ed741 (#5616)
- documentation: Fix mlir_introduction notebook exercise @math-fehr (#5605)
- documentation: add two hints to MLIR introduction notebook @tobiasgrosser (#5599)
- docs: update mlir-introduction to marimo 0.17.8 @tobiasgrosser (#5598)
Continuous Integration
- CI: add tests-quiet make target to spare terminal @superlopuh (#5624)
- CI: deploy to website from main only, not PRs @superlopuh (#5632)
- CI: replace pre-commit with prek @superlopuh (#5617)
Dependencies
- dependencies: lock file maintenance @renovate[bot] (#5663)
- dependencies: lock file maintenance @renovate[bot] (#5641)
- dependencies: lock file maintenance @renovate[bot] (#5600)
Miscellaneous
Rewriting
- rewriting: Add
replace_uses_with_if@jumerckx (#5613) - rewriting: dead code removal in GreedyRewritePatternApplier @jumerckx (#5485)
Tool
- tool: (xdsl-opt) add diagnostic highlighting @alexarice (#5492)