Skip to content

Releases: xdslproject/xdsl

v0.66.0

05 Jun 16:07
f4a52af

Choose a tag to compare

Changes

xDSL framework

Dialects

Continuous Integration

Installation

Dependencies

Miscellaneous

Tool

v0.65.0

29 May 16:51
3eaf8ec

Choose a tag to compare

Changes

xDSL framework

Dialects

Transformations

  • transformations: (convert-memref-to-riscv) use get_strides helper @superlopuh (#6095)

Backend

  • backend: (llvm) add vector.reduce.fadd and fmul backend conversion @sueszli (#6120)
  • backend: (llvm) extract intrinsic_suffix and declare_intrinsic helpers @sueszli (#6131)
  • backend: remove riscemu target @superlopuh (#6111)

🗎 Documentation

  • documentation: (toy) return riscemu interpretation output instead of printing @superlopuh (#6101)
  • documentation: make toy a Python package installed in dev environments @superlopuh (#6104)
  • documentation: format all marimo notebooks @superlopuh (#6099)
  • documentation: Update outdated references in main README.md @naveen-seth (#6092)

🐛 Bug Fixes

  • dialects: (tensor) fix tensor.pad verifier for dynamic source dims @JosseVanDelm (#6090)

Testing

Continuous Integration

Dependencies

v0.64.0

14 May 12:49
5bebeb8

Choose a tag to compare

A delayed update, contains some important bug fixes and improvements, notably:

  1. raising errors on when setting operation fields (operands, results, attributes, properties, regions, successors), as these were broken since migrating to Python's (tnaks @ed741!).
  2. backend dialect operations now correctly declare memory effects both for main memory and registers when in allocated form
  3. Many more llvm op conversions and bug fixes (thanks @sueszli!)
  4. Introducing .get class method on constraints for optimisation on construction (thanks @alexarice!)

Changes

  • core: (Operation) add Error on setting operands @ed741 (#6068)
  • rewriting: add insert_op functionality to insert @alexarice (#6016)
  • dialects: (llvm) add CallIntrinsicOp backend converter and assembly format @sueszli (#5984)
  • dialects: (llvm) add backend converter for UndefOp @sueszli (#5981)

xDSL framework

Dialects

  • dialects: use negated isinstance check for FastMathAttr @sueszli (#6079)
  • dialects: (llvm) add FSinOp @sueszli (#5863)
  • dialects: (llvm) add FExpOp @sueszli (#5857)
  • dialects: (acc) Cleanup to remove is_optional_like and is_anchorable @mesham (#6075)
  • dialects: (acc) DeclareAttr and DeclareActionAttr @mesham (#6072)
  • dialects: (acc) RoutineInfoAttr and SpecializedRoutineInfoAttr @mesham (#6071)
  • dialects: (polynomial) add polynomial ops @szerdick (#6023)
  • dialects: (acc) Var name attribute @mesham (#6069)
  • dialects: (fir) Add missing fields and operations @mesham (#6063)
  • dialects: (acc) Atomic capture @mesham (#6061)
  • dialects: (polynomial) add attributes @szerdick (#6022)
  • dialects: (llvm) reject elementtype on function parameters @sueszli (#6060)
  • dialects: (acc) Atomic update OpenACC operation @mesham (#6058)
  • dialects: (acc) Atomic read and write operations @mesham (#6053)
  • dialects: (acc) Kernel environment operation @mesham (#6048)
  • dialects: (acc) Refactor WaitClause body logic into module level helpers @mesham (#6049)
  • core: Printing and parsing support for bf16 @mesham (#6029)
  • dialects: (arith) truncate bits when folding SignlessIntegerBinaryOperation @superlopuh (#6042)
  • dialects: (polynomial) add polynomial dialect type @szerdick (#6021)
  • dialects: (acc) Global constructor and destructor operations @mesham (#6036)
  • dialects: (llvm) add llvm.intr.fma op and use it in the LLVM backend @sueszli (#6010)
  • dialects: (riscv_snitch) use RegisterAllocatedMemoryEffect @superlopuh (#6033)
  • dialects: (acc) Routine OpenACC operation @mesham (#6019)
  • dialects: (riscv) all instructions have RegisterAllocatedMemoryEffect @superlopuh (#6032)
  • dialects: (riscv_snitch) add read/write effect traits @superlopuh (#6025)
  • dialects: (x86) only instructions have RegisterAllocatedMemoryEffect @superlopuh (#6026)
  • dialects: (wasmssa) Added WasmSSA dialect @hhkit (#6030)
  • dialects: (riscv_func) add RiscvFunctionCallMemoryEffect @superlopuh (#6027)
  • dialects: (riscv) add read/write effect traits @superlopuh (#6024)
  • dialects: (acc) Set and Wait OpenACC operations @mesham (#6018)
  • dialects: (acc) Init and Shutdown OpenACC runtime operations @mesham (#6017)
  • dialects: (x86, riscv) fix clashing memory effects declarations @superlopuh (#6013)
  • dialects: (acc) Loop operation @mesham (#6008)
  • dialects: (riscv_debug) printf has a write effect @superlopuh (#6005)
  • dialects: (acc) Add GangArgType and CombinedConstructsType Attributes @mesham (#6007)
  • dialects: (acc) Declare family of operations @mesham (#6001)
  • dialects: (acc) exit_data and update OpenACC operations @mesham (#5999)
  • dialects: (acc) Add EnterData OpenACC operation @mesham (#5994)
  • dialects: (llvm) remove stale TODO on CallOp @sueszli (#5996)
  • dialects: (riscv_scf, x86_scf) use RecursiveMemoryEffect @superlopuh (#5995)
  • dialects: (acc) OpenACC data operations @mesham (#5993)
  • dialects: (llvm) add ShuffleVectorOp with backend converter @sueszli (#5985)
  • dialects: (acc) Kernel operation has terminator operation as implicit terminator @mesham (#5992)
  • dialects: (llvm) add InsertElementOp with backend converter @sueszli (#5983)
  • dialects: (acc) Add OpenACC terminator operation @mesham (#5990)
  • dialects: (acc) OpenACC data privatization operations @mesham (#5989)
  • dialects: (acc) Replaced bespoke parsing of lists to parser's helper method @mesham (#5988)
  • dialects: (acc) Extend data entry operation base class to have custom assembly syntax @mesham (#5978)
  • dialects: (riscv_scf) infer constant step in linalg-snitch backend @superlopuh (#5952)
  • dialects: (llvm) fix ConstantOp parsing of zero-valued attributes @sueszli (#5975)
  • dialects: (acc) Support for OpenACC ReductionRecipe operation @mesham (#5974)
  • dialects: (llvm) custom print/parse for call_intrinsic @sueszli (#5938)
  • dialects: (acc) Private recipe and firstprivate recipe OpenACC operations @mesham (#5972)
  • dialects: (acc) Reduction recipe kind attribute @mesham (#5971)
  • dialects: (llvm) custom print/parse for global @sueszli (#5948)
  • dialects: (llvm) custom print/parse for inline_asm @sueszli (#5947)
  • dialects: (acc) Add data exit delete and detach OpenACC operations @mesham (#5967)
  • dialects: (acc) OpenACC copyout update_host data exit clauses @mesham (#5962)
  • dialects: (acc) Full data entry clause family of operations @mesham (#5957)
  • dialects: (riscv_scf) allow constant value for step @superlopuh (#5954)
  • dialects: (llvm) custom print/parse for call @sueszli (#5946)
  • dialects: (acc) OpenACC data entry clause operations @mesham (#5956)
  • dialects: (acc) Attributes to support data clause operations @mesham (#5953)
  • dialects: (llvm) add parse_optional_keyword_in helper @sueszli (#5949)
  • dialects: (linalg) Split linalg.py into init.py and ops.py @Lishin1215 (#5925)
  • dialects: (acc) OpenACC bounds infrastructure @mesham (#5945)
  • dialects: (acc) OpenACC kernels operation support @mesham (#5942)
  • dialects: (acc) Support for OpenACC serial operation @mesham (#5931)
  • dialects: (acc) Add OpenACC WaitClause to parallel op @mesham (#5926)
  • dialects: (csl, csl_wrapper, csl_stencil) move to dialects folder @superlopuh (#5928)
  • dialects: (acc) Added DeviceTypeOperandsWithKeywordOnly directive for async clause syntax @mesham (#5924)
  • dialects: (llvm) custom print/parse for pointer subset and value ops @sueszli (#5908)
  • dialects: (llvm) add FCeilOp @sueszli (#5861)
  • dialects: (acc) Add support for NumGangs to OpenACC ParallelOp @mesham (#5923)
  • dialects: (acc) Add custom assembly format for parallel op @mesham (#5922)

Transformations

  • transformations: (canonicalize) enable folding @superlopuh (#6054)
  • transformations: (convert-ptr-to-riscv) enable dce @superlopuh (#6046)
  • transformations: (convert-memref-to-riscv) enable dce @superlopuh (#6045)
  • transformations: elide RemoveUnusedOperations when folding greedily @superlopuh (#6043)
  • transformations: (convert-func-to-x86-func) don't insert directives @superlopuh (#6015)
  • transformations: (convert-arith-to-riscv-snitch) enable dce @superlopuh (#6004)
  • transformations: (convert-arith-to-riscv) enable dce @superlopuh (#6003)
  • transformations: (riscv-scf-loop-range-folding) handle constant steps @superlopuh (#5966)
  • transformations: (convert-riscv-scf-for-to-frep) improve comments positioning [NFC] @superlopuh (#5958)
  • transformations: (riscv-scf-for-infer-constant-step) add pass @superlopuh (#5959)
  • transformations: handle constant step in riscv_scf lowering passes @superlopuh (#5961)

Backend

  • backend: use RegisterAllocatedMemoryEffect for all_used_registers @superlopuh (#6041)
  • backend: (llvm) replace vector.broadcast with pure LLVM ops @sueszli (#6038)
  • dialects: (llvm) add llvm.intr.fma op and use it in the LLVM backend @sueszli (#6010)
  • backend: add API to declare registers to exclude for regalloc @superlopuh (#6002)
  • backend: (x86) dce when converting arith and vector to x86 @superlopuh (#5998)
  • backend: all used regs within region is a set instead of iterable @superlopuh (#5997)
  • backend: (llvm) set addrspace from source type when building typed pointers @sueszli (#5909)
  • x86 legalize: cardinality preservation is in fact not a requirement @qaco (#5494)
  • backend: (llvm) remove @cache from convert_type @sueszli (#5933)

Benchmarking

  • bench: fix LLVM backend benchmark and add CI smoke test @sueszli (#5987)
  • bench: defer llvmlite import in LLVM backend benchmark @sueszli (#5976)
  • bench: add CI to validate benchmark imports @sueszli (#5965)
  • bench: fix LLVM backend benchmark for ASV discovery @sueszli (#5960)
  • bench: add LLVM backend conversion benchmark @sueszli (#5936)

🗎 Documentation

  • docs: (CONTRIBUTING) prefer is not None over truthiness for Optional values [NFC] @sueszli (#5977)
  • documentation: fix addition vs multiplica...
Read more

v0.63.0

24 Apr 16:22
d332b7b

Choose a tag to compare

Changes

Dialects

  • dialects: (acc) Extend parallel op to include properties @mesham (#5916)
  • dialects: (acc) Initial OpenACC dialect with parallel and yield @mesham (#5914)
  • dialects: (fir) Updates to experimental fir and hlfir dialects for llvm 22.1.2 @mesham (#5913)
  • dialects: (omp) Add missing collapse_num_loops property @mesham (#5911)
  • dialects: (llvm) drop NullOp and add custom formats @sueszli (#5881)
  • dialects: (llvm) include expected/found op names in CallOp verify error @sueszli (#5894)
  • dialects: (x86) add kmov ops @superlopuh (#5877)
  • dialects: (llvm) verify CallOp callee is a declared FuncOp @sueszli (#5849)
  • dialects: (riscv_snitch) add recursive memory effects to frep @superlopuh (#5885)
  • dialects: (riscv_snitch) leverage register effects in riscv_snitch @superlopuh (#5884)
  • dialects: (riscv_snitch) factor out is_valid_frep_body_op helper @superlopuh (#5883)

Transformations

  • transformations: (convert-memref-to-ptr) support dynamic dimensions @sueszli (#5847)
  • transformations: (convert_arith_to_riscv_snitch) add vfsubh, vfsubs lowering @szerdick (#5854)
  • transformations: (convert-memref-to-ptr) rename get_* helpers to build_* @sueszli (#5856)

Backend

  • backend: (llvm) translate llvm.* arg attrs in convert_module @sueszli (#5850)
  • backend: (llvm) only pass fastmath to calls returning a float @sueszli (#5878)
  • backend: (llvm) convert llvm.mlir.zero instead of llvm.mlir.null @sueszli (#5879)
  • backend: (llvm) add ConstantOp conversion @sueszli (#5833)
  • backend: (llvm) add vector.BroadcastOp conversion @sueszli (#5829)

🗎 Documentation

  • documentation: (marimo) remove navigation from embedded notebooks @claudiotancredi (#5880)
  • documentation: (CONTRIBUTING) prefer op.name over op.properties["name"] @sueszli (#5874)

Testing

Continuous Integration

Dependencies

v0.62.1

17 Apr 19:07
3cbed6a

Choose a tag to compare

Changes

Dialects

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

v0.62.0

10 Apr 08:32
79bcf5f

Choose a tag to compare

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

v0.61.0

10 Apr 08:29
e30b3cc

Choose a tag to compare

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

v0.60.0

03 Apr 15:22
ffe70dc

Choose a tag to compare

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

Dialects

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

v0.59.0

20 Mar 07:10
bda57f2

Choose a tag to compare

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

19 Mar 21:50
5576cc0

Choose a tag to compare

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

Dialects

Transformations

  • transformations: (linalg-generalize-named-ops) Generalize named ops to linalg.generic @Lishin1215 (#5726)

🐛 Bug Fixes

  • rewriting: Fix has_done_action flag for replace uses methods. @ed741 (#5742)

Dependencies

Rewriting

  • rewriting: Fix has_done_action flag for replace uses methods. @ed741 (#5742)