Releases: xdslproject/xdsl
v0.43.0
Another busy week.
Important changes:
- The
Printer.print
function is deprecated, please use the typed alternatives instead. - The
AnyOf
constraint now requires that each case constraint is satisfied a unique attribute class (unique base) - Added many typed inits to the framework, in the next release these will be generated automatically by the decorator
Changes
- tools: move catching verification and parsing errors from
CommandLineTool
toxDSLOptMain
@compor (#3915) - dialects: (llvm) only add
var_callee_type
if call is variadic @erick-xanadu (#4654) - core: (Printer) deprecate Printer.print @alexarice (#4604)
xDSL framework
- core: (Parser) add delimiter functions @alexarice (#4676)
- core: (Printer) cleanup core printing functions @alexarice (#4671)
- core: add PyRDLTypeError for irdl_to_attr_constraint @superlopuh (#4666)
- frontend: (pyast) add mlir filecheck tests for the symref dialect @EdmundGoodman (#4652)
- core: replace generic_constraint_coercion with generic_constraint @superlopuh (#4518)
- frontend: (pyast) remove custom pyast dialects @EdmundGoodman (#4643)
- core: specialize DataListAttr @superlopuh (#4646)
- core: DictionaryAttr is not generic @superlopuh (#4645)
- frontend: (pyast) add support for calling functions with variable arguments @EdmundGoodman (#4639)
- frontend: (pyast) consolidate bigint tests into dialect directory @EdmundGoodman (#4635)
- pyast: (frontend) refactor type registry @EdmundGoodman (#4630)
- core: don't print IR twice on verification @superlopuh (#4631)
- core: add simplification for | on BaseAttr and ParamAttrConstraint @superlopuh (#4627)
- core: add simplification for & and | on AnyAttr @superlopuh (#4623)
- frontend: (pyast) move function registry out of type converter @EdmundGoodman (#4625)
Dialects
- dialects: (builtin) add typed inits to remaining builtin attrs @superlopuh (#4680)
- dialects: (llvm) add typed inits to llvm dialect @superlopuh (#4681)
- dialects: (hls) add typed init to HLSStreamType @superlopuh (#4682)
- dialects: (builtin) allow
IntConstraint
s in IntegerAttr.constr @alexarice (#4678) - WIP dialects: (fir) Update to bring inline with operations in Flang 20.1.1 @mesham (#4673)
- dialects: (stencil) add typed inits to stencil and csl attrs @superlopuh (#4674)
- dialects: (llvm) Add unreachable operation @mesham (#4672)
- dialects:(omp) added omp.target @dk949 (#4653)
- dialects: (hw) add init to ModuleType, ModulePort and ParamDeclAttr @superlopuh (#4658)
- dialects: (gpu) add init to LoopDimMapAttr @superlopuh (#4660)
- dialects: (builtin) add init to DenseIntOrFPElementsAttr @superlopuh (#4659)
- dialects: (mpi) add inits to OperationType and VectorType @superlopuh (#4661)
- dialects: (builtin) add init to UnitAttr @superlopuh (#4662)
- dialects: add missing
get_bases
@alexarice (#4648) - dialects: simplify various AnyOf constraints @alexarice (#4650)
- dialect: (llvm) add typed parse_parameters to types @superlopuh (#4641)
- dialects: (math) Add
math.sinh
andmath.cosh
@jumerckx (#4644) - interpreter: (pdl_interp)
switch_attribute
,create_type
, andcreate_types
@jumerckx (#4642) - interpreter: (pdl_interp)
check_type
@jumerckx (#4634) - dialect: Add ContiguousArrayOfIntArray to tensor dialect @Jimmy2027 (#4626)
- dialects: (builtin) remove duplicate FlatSymbolRefAttrConstr @superlopuh (#4622)
- dialects: (emitc) add lvalue type @Jimmy2027 (#4512)
- dialects: (builtin) add type overloads to DenseArrayBase.get_values @superlopuh (#4598)
- dialects: Add smt.bv.constant constructor @math-fehr (#4594)
Transformations
- transformations: use DenseArrayBase when lowering memref to riscv @superlopuh (#4608)
Backend
- backend: (x86) ptr.load double-precision to x86 instructions @qaco (#4669)
- backend: (x86) double-precision pointer load @qaco (#4667)
- backend: closed set of allocatable registers @superlopuh (#4633)
- backend: (x86) convert arith.constant to x86 instructions @qaco (#4647)
- backend: (x86) convert arith.muli to x86 instructions @qaco (#4638)
- backend: (x86) non-vector ptr.store to x86 instructions @qaco (#4636)
- backend: (x86) convert arith.addi to x86 instructions @qaco (#4612)
- backend: (x86) non-vector ptr.load to x86 instructions @qaco (#4613)
- backend: add RegisterType.allocatable_registers @superlopuh (#4621)
Interpreter
- interpreter: (pdl_interp)
switch_attribute
,create_type
, andcreate_types
@jumerckx (#4642) - interpreter: (pdl_interp)
check_type
@jumerckx (#4634) - interpreter: (pdl_interp) Consistent naming for interpreter methods @jumerckx (#4616)
🗎 Documentation
- documentation: fix typo in KnownOps @superlopuh (#4614)
Testing
- testing: add inits to attributes in tests @superlopuh (#4675)
- testing: add test for eqsat roundtrip @superlopuh (#4615)
Continuous Integration
- CI: use setup-python instead of uv python install @superlopuh (#4609)
Installation
- dependencies: update dependency marimo to v0.14.9 @renovate[bot] (#4679)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.12.1 @renovate[bot] (#4657)
- dependencies: update dependency ruff to v0.12.1 @renovate[bot] (#4656)
- dependencies: update dependency marimo to v0.14.8 @renovate[bot] (#4655)
- dependencies: update dependency marimo to v0.14.7 @renovate[bot] (#4620)
- dependencies: update dependency marimo to v0.14.6 @renovate[bot] (#4611)
- dependencies: update dependency marimo to v0.14.5 @renovate[bot] (#4606)
- dependencies: update dependency marimo to v0.14.5 @renovate[bot] (#4605)
Miscellaneous
- utils: (dialect_codegen) make dynamically defined types final @alexarice (#4663)
- misc: Simplify use of
RankedStructure
@alexarice (#4664) - misc: print single line at the end of Diagnostic @superlopuh (#4632)
- interpreter: (pdl_interp) Consistent naming for interpreter methods @jumerckx (#4616)
- transformations: use DenseArrayBase when lowering memref to riscv @superlopuh (#4608)
- misc: remove some duplicate declarations @superlopuh (#4607)
- misc: resolve licence mismatch in pyproject.toml @EdmundGoodman (#4603)
v0.42.0
This release fixes tuple type printing and parsing, and contains a number of minor performance improvements.
We have begun to slowly move away from the Printer.print
function, reducing its uses, and will deprecate it in an upcoming release.
This update changes the mlir-opt version xDSL depends on to the one shipped with LLVM 20.1.7.
Changes
- bench: mergeable version of specialised benchmarks without reverted core changes @EdmundGoodman (#4522)
- dialects: (experimental) try to make printing more sane @alexarice (#4601)
- dialects: (builtin) undeprecate DenseIntOrFPElementsAttr.from_list @alexarice (#4577)
- Add python 3.13 to mlir ci @alexarice (#4588)
- bench: peel microbenchmark changes from #4522 @EdmundGoodman (#4584)
- bench: peel timing code from #4522 @EdmundGoodman (#4583)
- bench: peel workload fixes from #4522 @EdmundGoodman (#4582)
- bench: peel printer changes from #4522 @EdmundGoodman (#4581)
- dialects: (llvm) remove Printer.print @alexarice (#4571)
- bench: remove old bytecode profiling implementation and import-time dependency @EdmundGoodman (#4508)
xDSL framework
- core: (Printer) cleanup print_complex @alexarice (#4591)
- core: (Printer) add print_int @alexarice (#4590)
- core: (Printer) remove print_float_attr @alexarice (#4589)
- core: Tighten typing of IRDLGenericAttrConstraint @alexarice (#4569)
- core: (Printer) add helper for symbol name printing @alexarice (#4545)
- misc: (Printer) remove print uses, 'easy cases' @alexarice (#4562)
- core: (Printer) remove variadic prints @alexarice (#4543)
- core: (Printer) add delimited @alexarice (#4547)
- dialects: (builtin) move printing to BuiltinAttribute @alexarice (#4549)
- core: Parser.parse_type returns a TypeAttribute @superlopuh (#4536)
Dialects
- dialects: (builtin) deprecate dense element create methods @alexarice (#4600)
- dialects: (builtin) deprecate DenseIntOrFPElementsAttr.get_{int/float}_values @alexarice (#4599)
- dialects: (builtin) simplify and fix array printing @alexarice (#4593)
- dialects: (smt) Add binary bitvector operations @math-fehr (#4553)
- dialects: (builtin) deprecate DenseArrayBase.create_dense_* @superlopuh (#4575)
- dialects: (csl-stencil) avoid making FloatAttrs @alexarice (#4587)
- dialects: (x86) remove uses of Printer.print @alexarice (#4574)
- dialects: (stencil) remove uses of Printer.print @alexarice (#4572)
- dialects: (csl-stencil) remove uses of Printer.print @alexarice (#4573)
- dialects: (builtin) replace DenseI64ArrayConstr with DenseArrayBase.constr(i64) @superlopuh (#4568)
- dialects: (linalg) improve printing/verification of transpose and broadcast @alexarice (#4565)
- dialects: (builtin) add DenseArrayBase.constr @alexarice (#4570)
- dialects: (hw) remove uses of Printer.print @alexarice (#4566)
- dialects: (riscv) remove uses of Printer.print @alexarice (#4567)
- dialects: (tensor) add
tensor.from_elements
@erick-xanadu (#4559) - dialects: (builtin) use delimited in builtin printers @alexarice (#4561)
- dialects: (comb) remove uses of Printer.print @alexarice (#4563)
- dialects: (math_xdsl)
math
dialect extension for constant values @jumerckx (#4557) - dialects: (smt) Add
smt.bv.neg
andsmt.bv.not
operations @math-fehr (#4552) - dialects: (builtin) move printing to BuiltinAttribute @alexarice (#4549)
- dialects: (builtin) add typed init to DenseArrayBase @superlopuh (#4521)
- dialects: (builtin) support printing and parsing tuple types @superlopuh (#4524)
Transformations
- transformations: (eqsat) Delete
pdl
-based eqsat in favor ofpdl_interp
@jumerckx (#4494) - transformations: (eqsat) Add apply-eqsat-pdl-interp pass @jumerckx (#4493)
- transformations: (riscv) Add canonicalization pattern x*1->x @zykdtc (#4535)
Interpreter
Testing
- testing: use match for VerifyException tests @superlopuh (#4554)
Installation
- dependencies: update dependency to LLVM 20.1.7 @superlopuh (#4586)
- dependencies: update dependency marimo to v0.14.0 @renovate[bot] (#4579)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.12.0 @renovate[bot] (#4556)
- dependencies: update dependency textual to v3.4.0 @renovate[bot] (#4537)
Miscellaneous
- misc: (Printer) remove uses of
str
while printing @alexarice (#4597) - misc: (Printer) remove Printer.print string literal cases @alexarice (#4592)
- misc: remove ConstraintVar from list of allowed values in IRDLGenericAttrConstraint @superlopuh (#4578)
- misc: remove TypeVar from list of allowed values in IRDLGenericAttrConstraint @superlopuh (#4576)
- dialects: (comb) remove uses of Printer.print @alexarice (#4563)
- misc: (Printer) remove print uses, 'easy cases' @alexarice (#4562)
- misc: remake lockfile and update transitive dependencies @superlopuh (#4558)
- misc: use print_string in assembly format @superlopuh (#4548)
- misc: leverage default when using MemRefType @superlopuh (#4541)
- misc: use print_ssa_value in _print_results @superlopuh (#4540)
- misc: fix tuple_type parsing @superlopuh (#4542)
v0.41.0
Biggest change is that we can now print and parse dialect resources, as long as they're in the same .mlir file.
Changes
- parser: Parse metadata @mamanain (#4529)
- interpreter: (arith) add functions for shlsi,shrsi,divsi,remsi,floordivsi @alastairreid (#4523)
xDSL framework
- core: Print metadata in file @mamanain (#4534)
- core: Parameter to load dialect if needed @mamanain (#4525)
- core: Dialect interfaces,
OpAsmDialectInterface
@mamanain (#4503)
Dialects
- dialects: (stablehlo) adds
stablehlo.constant
@erick-xanadu (#4530) - dialects:
DenseResourceAttr
fixes @mamanain (#4526) - dialects: (builtin) Add support for parsing and printing complex types @erick-xanadu (#4379)
- dialects : (riscv) extend M extensions, add B extension, add ZiCond extension @salinhkuhn (#4519)
- dialects: (stencil) replace IndexAttr.parse_nested_parameters @superlopuh (#4520)
Interpreter
- interpreter: (eqsat) Interpret for
CreateOperationOp
@jumerckx (#4517) - interpreter: (eqsat) Add backtracking mechanism for
GetDefiningOp
@jumerckx (#4516) - interpreter: (eqsat) Fix and make error in handling in get_result(s) more consistent @jumerckx (#4527)
Testing
- testing: remove TestSSAValue deprecated two months ago @superlopuh (#4531)
Installation
- dependencies: update dependency pyright to v1.1.402 @renovate[bot] (#4528)
Miscellaneous
- misc: remove deprecated from_list call in benchmark @superlopuh (#4533)
v0.40.0
This release adds TypeVarConstraint
, a way to bridge Python's type variables to constraints in xDSL. Most users of xDSL won't need to use this, but advanced users of custom constraints are invited to take a look at the documentation.
Changes
- bench: add readme file to benchmarks directory @EdmundGoodman (#4500)
- bench: switch to using bytesight implementation from github @EdmundGoodman (#4495)
xDSL framework
- core: deprecate attr_constr_coercion @alexarice (#4507)
- core: use attribute definition in irdl_to_attr_constraint @superlopuh (#4499)
- core: constrain Data bound to be Hashable @superlopuh (#4498)
- core: Add support for qualified attributes in assembly format @math-fehr (#4481)
- core: add TypeVarConstraint, and use in irdl_to_attr_constraint @superlopuh (#3443)
- core: allow multiple levels of Generics in operation definitions @superlopuh (#4496)
- core: Fix printing of non-builtin TypedAttribute @math-fehr (#4480)
Dialects
- dialects: (emitc) Add additional invalid emitc array type checks @Jimmy2027 (#4511)
- dialects: Add bitvector attribute and constant operation @math-fehr (#4482)
- dialects: (eqsat) Add eqsat egraph and yield operation @jumerckx (#4491)
- dialects: (fir and hlfir) Updates to dialects based upon new operations and types in FIR and HLFIR to bring up to date @mesham (#4489)
- dialects: (emitc) add emitc array verify and parsing checks @Jimmy2027 (#4447)
- dialects: (emitc) Remove duplicated testcase @Jimmy2027 (#4484)
Transformations
- transformations: shift right by zero canonicalization for RISCV dialect @baymaks (#4501)
- transformations: (convert-memref-to-ptr) lower static offset @superlopuh (#4426)
Interpreter
- interpreter: (eqsat) Interpret for GetResult(s)Op @jumerckx (#4515)
- interpreter: (eqsat)
populate_known_ops
@jumerckx (#4514)
Installation
- dependencies: update dependency ruff to v0.11.13 @renovate[bot] (#4505)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.11.13 @renovate[bot] (#4506)
- dependencies: update dependency pytest to <8.5 @renovate[bot] (#4490)
- dependencies: update dependency textual to v3.3.0 @renovate[bot] (#4485)
Miscellaneous
- misc: enable PYI rule for ruff @superlopuh (#4488)
- misc: remove unused private TypeVars @superlopuh (#4487)
- misc: enforce use of typing_extensions.TypeVar @alexarice (#4486)
v0.39.0
Changes
xDSL framework
- core: Improve typing of
irdl_to_attr_constraint
@math-fehr (#4478) - core: refactor parser and printer for complex booleans @erick-xanadu (#4467)
- core: (constraints) introduce get_bases @alexarice (#4462)
- core: (constraints) experiment with ditching extractors @alexarice (#4432)
- core: migrate remaining optional constraint_context in verify @superlopuh (#4453)
- core: make ParametrizedAttribute parameters dynamic @superlopuh (#4451)
Dialects
- dialects: Add
smt.bv
type @math-fehr (#4479) - dialects: (emitc) Add supported integer type check @Jimmy2027 (#4461)
- backend: (x86) vpbroadcast instructions @qaco (#4470)
- dialects: (emitc) remove duplicated empty shape error @Jimmy2027 (#4468)
- dialects: (vector) tighten bounds on constraint variable @alexarice (#4463)
- dialects: (arm_neon) add VectorWithArrangement.from_vec_type @emmau678 (#4345)
- dialects: (emitc) Add negative dimension verify exception @Jimmy2027 (#4460)
Transformations
Backend
- backend: remove limit registers in register queue @superlopuh (#4464)
- backend: lowering of vector.broadcast to x86 @qaco (#4459)
- backend: (x86) vpbroadcast instructions @qaco (#4470)
- backend: RegisterQueue -> RegisterStack @superlopuh (#4466)
- backend: add x86-allocate-registers @superlopuh (#4314)
- backend: (x86) add x86 register queue @superlopuh (#4444)
- backend: add BlockNaiveAllocator @superlopuh (#4449)
Interpreter
🐛 Bug Fixes
- bug: fix remaining register queue references @superlopuh (#4475)
- bug: fix references to RegisterStack @superlopuh (#4473)
- bug: (x86) possibly different register types for DS_Operation @qaco (#4469)
- misc: swap comparison in disjoint set @jumerckx (#4452)
Installation
- dependencies: update dependency marimo to v0.13.15 @renovate[bot] (#4483)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.11.12 @renovate[bot] (#4477)
- dependencies: update dependency ruff to v0.11.12 @renovate[bot] (#4476)
- dependencies: update dependency marimo to v0.13.14 @renovate[bot] (#4472)
- dependencies: update dependency marimo to v0.13.13 @renovate[bot] (#4465)
- dependencies: update dependency marimo to v0.13.13 @renovate[bot] (#4450)
- dependencies: update dependency pytest-asyncio to v1 @renovate[bot] (#4457)
Miscellaneous
- misc: re-run all notebooks with updated marimo @superlopuh (#4456)
v0.38.1
A small bug fix release.
- misc: only import TypeForm when type checking @superlopuh (#4454)
v0.38.0
Another busy week in xDSL land, with a partial port of the smt
dialect by @math-fehr, better handling of complex types by @efferifick, a start of a port of the EmitC dialect by @Jimmy2027, and continuing work on making register allocation work on more targets than RISC-V by @superlopuh.
xDSL framework
- core: avoid pipeline tuples when parsing pass spec @superlopuh (#4441)
- core: (constraints) improve inference debug message @alexarice (#4434)
- core: (SSAValue) make
get
generic @alexarice (#4428) - core: Support optional attrs in assembly format @math-fehr (#4414)
- core: Check if an operation is before another in a block @gabrielrodcanal (#4385)
- core: Find the ancestor block of a block within a region @gabrielrodcanal (#4386)
- core: Find the ancestor operation of an operation in a block @gabrielrodcanal (#4391)
- core: Refactor parser and printer for complex types @erick-xanadu (#4351)
- core: deprecate isattr @superlopuh (#4341)
- core: (constraints) improve inference debug message @alexarice (#4434)
Dialects
- dialects: (x86) add RegisterAllocatableOperation annotation to x86 @superlopuh (#4448)
- dialects: (x86) fix mov operations @superlopuh (#4427)
- dialects: (x86) use typed SSA values for inference in inits @superlopuh (#4443)
- dialects: (builtin) add typed helper for conversion cast @superlopuh (#4442)
- dialects (arm): change attributes to properties uniformly and insert … @emmau678 (#4410)
- dialects: Add
smt.assert
@math-fehr (#4440) - dialects: Add
smt.not
@math-fehr (#4439) - dialects: Add
smt.ite
@math-fehr (#4438) - dialects: (x86) migrate operations to consistent mnemonic @superlopuh (#4429)
- dialects: (builtin) Add
get_complex_values
andcreate_from_complex
toDenseIntOrFPElementsAttr
@erick-xanadu (#4418) - docs: (GETTING_STARTED.md) Add two new canonicalization suggestions @MDLC01 (#4430)
- dialects: (smt) Implement
smt.implies
operation @math-fehr (#4425) - dialects: (bufferization) fix ToTensorOp init @alexarice (#4431)
- dialects: (smt) Implement
smt.apply_func
@math-fehr (#4424) - dialects: Allow range constraints in ArrayOfConstraint @math-fehr (#4420)
- dialects: Add
smt.declare_fun
and!smt.func
@math-fehr (#4417) - dialects: (pdl_interp) Fix small issues in
CreateOperationOp
andGetDefiningOp
@jumerckx (#4412) - dialects: (pdl_interp) add
SwitchOperationName
@jumerckx (#4413) - dialects: (emitc) Add EmitC dialect with the EmitC_ArrayType @Jimmy2027 (#4401)
- dialects: Add
smt.exists
andsmt.forall
operations @math-fehr (#4411) - dialects: (builtin) make DenseArrayBase generic @alexarice (#4399)
- dialects (arm): Add fmul (vector) instruction @emmau678 (#4407)
- dialects: (arm) Add mov instruction for Neon -> general-purpose register @emmau678 (#4363)
- dialects: (x86) replace S with C for "conditional" mnemonic @superlopuh (#4392)
- dialects: (smt) Add
smt.eq
andsmt.distinct
@math-fehr (#4375) - dialects: (builtin) simplify uses of DenseIntOrFPElementsAttr @alexarice (#4397)
- dialects: (builtin) optimise splat value initialisation @alexarice (#4393)
- dialects: (builtin) deprecate tensor_from_list @alexarice (#4388)
- dialects: (builtin) add splat generators for DenseElementsAttr @alexarice (#4387)
- dialects: (x86) use Imm for immediate value in ABC names @superlopuh (#4382)
- dialects: (x86) move all abstract operations to one place @superlopuh (#4380)
- dialects: (builtin) add
get_{int/float}_values
@alexarice (#4367) - dialects: Create a base version of the
smt
dialect @math-fehr (#4350) - dialects: (toy) make f64 specific and use
create_dense_float
@alexarice (#4362) - dialects: (builtin) deprecate from_list @alexarice (#4389)
- dialects: (builtin) simplify uses of DenseIntOrFPElementsAttr @alexarice (#4397)
Transformations
- transformations: (convert-memref-to-ptr) inline offset_calculations helper @superlopuh (#4422)
- transformations: Loop Invariant Code Motion @RRavikiran66 (#3027)
- transformations: (convert-vector-to-ptr) cast first then ptr arithmetic @superlopuh (#4403)
- transformations: (convert-vector-to-ptr) share helper for offset calculations @superlopuh (#4398)
- transformations: (vector) vector.store to ptr @qaco (#4384)
Backend
- backend: add allocate_registers abstract method to RegisterAllocatableOperation @superlopuh (#4423)
- backend: add BlockAllocator base class @superlopuh (#4405)
- backend: (x86) vector.fma to x86 instructions @qaco (#4416)
- backend: add ValueAllocator base class for SSAValue allocation @superlopuh (#4349)
- backend: ptr_xdsl.ptradd to x86 @qaco (#4383)
- backend: ptr.store to x86 @qaco (#4376)
Interpreter
- interpreter: (transform) add semantics for
apply_registered_pass
@erick-xanadu (#4275) - dialects: (pdl_interp) Fix small issues in
CreateOperationOp
andGetDefiningOp
@jumerckx (#4412) - dialects: (pdl_interp) add
SwitchOperationName
@jumerckx (#4413)
🐛 Bug Fixes
Installation
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.11.11 @renovate[bot] (#4446)
- dependencies: update dependency ruff to v0.11.11 @renovate[bot] (#4445)
- dependencies: update dependency pyright to v1.1.401 @renovate[bot] (#4435)
- dependencies: update dependency marimo to v0.13.11 @renovate[bot] (#4433)
- dependencies: update dependency numpy to v2.2.6 @renovate[bot] (#4421)
- dependencies: update dependency marimo to v0.13.10 @renovate[bot] (#4415)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.11.10 @renovate[bot] (#4409)
- dependencies: update dependency ruff to v0.11.10 @renovate[bot] (#4408)
- installation: (nix) add zlib @alexarice (#4406)
- dependencies: update dependency marimo to v0.13.9 @renovate[bot] (#4402)
- dependencies: update dependency marimo to v0.13.8 @renovate[bot] (#4396)
- installation: (nix) include mlir-opt in flake @alexarice (#4381)
- dependencies: update dependency marimo to v0.13.7 @renovate[bot] (#4377)
Miscellaneous
- minor: remove old asserts @alexarice (#4390)
v0.37.0
Another productive week! There has been some activity making register allocation more general, moving towards allocating registers for x86 and ARM dialects, some equality saturation work, and first steps towards being able to store complex types in dense arrays, as well as some small quality of life improvements in the APIs.
Note that this release removed a number of functions that have been deprecated for over three months, and added some new deprecations.
xDSL framework
- dialects: (builtin) Make
ComplexType
inherit fromGeneric
andContainerType
. @erick-xanadu (#4352) - core: Add notify_op_modified to the PatternRewriter @math-fehr (#4348)
- core: only pass constraints to
isattr
@superlopuh (#4336) - core: Separate attributes and types in the context @math-fehr (#4330)
- core: Add nicer error messages for RangeOf @math-fehr (#4332)
- core: (constraints) remove variance on
get_variable_extractors
@alexarice (#4322) - formatting: github merge error @alexarice (#4328)
- core: Create BuiltinAttribute class @math-fehr (#4303)
Dialects
- dialects: (builtin) Make
ComplexType
inherit fromPackableType
@erick-xanadu (#4353) - dialects: (builtin) fix deprecated vector_from_list @alexarice (#4365)
- dialects: (builtin) stricten create_dense_float typing @alexarice (#4361)
- dialects (arm): Add dup instruction @emmau678 (#4357)
- dialects: (builtin) deprecate vector_from_list @alexarice (#4360)
- dialects: (cf) simplify switch's use of DenseIntElementAttr @alexarice (#4359)
- dialects: (builtin) deprecate create_dense_index @alexarice (#4358)
- dialects: (builtin) Make
ComplexType
inherit fromGeneric
andContainerType
. @erick-xanadu (#4352) - dialects: (builtin) move check to DenseElement verify @alexarice (#4356)
- dialects: (memref) Add nontemporal default value. @milos1397 (#4346)
- dialects: (riscv) canonicalization pattern added (x / 1 → x) @milos1397 (#4338)
- dialects (arm): add destination reg as operand to fmla instruction @emmau678 (#4184)
- dialects: (vector) Add nontemporal to vector.load and vector.store @milos1397 (#4344)
- dialects: (transform) add assembly format for
apply_registered_pass
@efferifick (#4307) - dialects: (ptr) add inits to ptr dialect @superlopuh (#4340)
- dialects: (ptr) add canonicalization patterns to remove to/from ptr @superlopuh (#4339)
- dialects: (ptr) add FromPtrOp @superlopuh (#4334)
- dialects: (builtin) remove TensorOrMemRefConstraint @alexarice (#4321)
- dialects: (arith) move float binary ops to assembly format @alexarice (#4323)
- dialects: (arith) fix negf @alexarice (#4324)
- dialects: (arith) move select to assembly format @alexarice (#4325)
Transformations
- transformations: (convert-memref-to-ptr) use to/from ptr ops for casts @superlopuh (#4342)
- transformations: (convert-ptr-to-llvm) Add conversions for
ConvertToPtrOp
andConvertFromPtrOp
@kaylendog (#4355) - transformations: (pdl_interp) Add
pdl-interp-apply
pass @jumerckx (#4279) - transformations: vector load to ptr @qaco (#4192)
- transformations: (convert-ptr-to-llvm) Enable recursive type rewriting @kaylendog (#4354)
Backend
- backend: (riscv) use RegisterAllocationOperation for snitch reserved registers @superlopuh (#4335)
- backend: add RegisterAllocatableOperation abstract base class @superlopuh (#4318)
- backend: ptr load to x86 @qaco (#4304)
Interpreter
🗎 Documentation
- documentation: Rename traversal example function to @sum_of_squares for clarity @RepoBirdBot (#4319)
Testing
- testing: add unregistered dialect flag to new test @superlopuh (#4347)
Installation
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.11.9 @renovate[bot] (#4369)
- dependencies: update dependency ruff to v0.11.9 @renovate[bot] (#4368)
- dependencies: update dependency filecheck to v1.0.2 @renovate[bot] (#4337)
- dependencies: update dependency marimo to v0.13.6 @renovate[bot] (#4333)
Miscellaneous
- misc: remove APIs deprecated more than three months ago @superlopuh (#4370)
- dialects: (builtin) fix deprecated vector_from_list @alexarice (#4365)
v0.36.0
Changes
- bench: Make the
has_trait
microbenchmark comparable to the how slow is MLIR version @EdmundGoodman (#4297) - bench: disable benchmarks failing in ASV CI flow @EdmundGoodman (#4302)
- rewriting: make
_replace_all_uses_with
public @erick-xanadu (#4301) - Add arith.uitofp and arith.fptoui @JosseVanDelm (#4283)
- Add linalg.index op @JosseVanDelm (#4280)
- core: refactor has_trait method to eliminate issubclass checks @EdmundGoodman (#4242)
xDSL framework
- core: (ParsePropInAttrDict) allow a subset of properties to be parsed in attr-dict @alexarice (#4316)
- core: (parser) Fix VariadicSuccessorVariable assembly format @jumerckx (#4288)
Dialects
- dialects: (builtin) add generic parameter to DenseIntOrFPElementsAttr @alexarice (#4292)
- dialects: (transform) Add custom syntax for
transform.named_sequence
@efferifick (#4290) - dialects: (irdl) add name properties @alexarice (#4294)
- dialects: (vector) add transfer_read and transfer_write @superlopuh (#4263)
- dialects: (transform) Add
apply_registered_pass
op @erick-xanadu (#4265) - dialects: (transform) add function-like traits to named_sequence @erick-xanadu (#4266)
- dialects: (linalg) add more conv2d operations @jorendumoulin (#4144)
- dialects: (vector) add helpers for transfer ops @superlopuh (#4264)
Transformations
- transformations: (transform) Add initial transform interpreter pass @efferifick (#4289)
- transformations: (stencil-shape-minimise) Support missing dims @n-io (#4278)
- transformations: (shape-inference) Support stencil offset_mapping @n-io (#4273)
- transforms: (linalg-to-csl) Workaround for min @n-io (#4268)
- transformations: (arith-add-fastmath) Support arith.cmpf @n-io (#4270)
- transformations: (linalg-to-csl) Translate linalg.max @n-io (#4255)
- canonicalize: (arith) Fold cmpf and select on same operands @n-io (#4251)
Backend
- backend: make RegisterQueue non-generic @superlopuh (#4317)
- backend: always exclude pre-allocated registers during regalloc @superlopuh (#4309)
- backend: (riscv) remove _allocate_live_ins_per_block helper @superlopuh (#4313)
- backend: (riscv) target-independent LIFO register queue @superlopuh (#4308)
- backend: (riscv) allocate any RISCVRegisterType @superlopuh (#4277)
- backend: use dictionaries for all register types during allocation @superlopuh (#4229)
Interpreter
- interpreter (transform): add semantics for
NamedSequenceOp
andYieldOp
@erick-xanadu (#4274) - interpreter: (pdl_interp) Implement
ReplaceOp
,FuncOp
,RecordMatchOp
, andFinalizeOp
. @jumerckx (#4258)
Installation
- dependencies: update dependency textual to v3.2.0 @renovate[bot] (#4315)
- dependencies: update dependency marimo to v0.13.4 @renovate[bot] (#4312)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.11.8 @renovate[bot] (#4311)
- dependencies: update dependency ruff to v0.11.8 @renovate[bot] (#4310)
- dependencies: update dependency marimo to v0.13.3 @renovate[bot] (#4305)
- dependencies: update dependency sympy to v1.14.0 @renovate[bot] (#4291)
- dependencies: update dependency pyright to v1.1.400 @renovate[bot] (#4281)
- dependencies: update astral-sh/setup-uv action to v6 @renovate[bot] (#4282)
- dependencies: update dependency marimo to v0.13.2 @renovate[bot] (#4284)
- dependencies: update dependency ruff to v0.11.7 @renovate[bot] (#4285)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.11.7 @renovate[bot] (#4286)
- dependencies: update dependency marimo to v0.13.1 @renovate[bot] (#4276)
- dependencies: update pre-commit hook pre-commit/pre-commit-hooks to v5 @renovate[bot] (#4272)
- dependencies: update pre-commit hook astral-sh/ruff-pre-commit to v0.11.6 @renovate[bot] (#4271)
- installation: (renovate) add pre-commit @alexarice (#4267)
- dependencies: update dependency textual to v3.1.1 @renovate[bot] (#4262)
Miscellaneous
v0.35.0
Changes
Dialects
- dialects: (affine) Fix ApplyOp printing and add test @Jimmy2027 (#4259)
- dialect: Add vector insert and extract verifiers @math-fehr (#4202)
- dialects: (linalg) MinOp and MaxOp @n-io (#4253)
Interpreter
- interpreter: (pdl_interp) Implement some
check*
operations @jumerckx (#4257) - interpreter: (pdl_interp) Implement some
get*
andcreate*
operations @jumerckx (#4247)
Continuous Integration
- CI: remove references to setup.py @superlopuh (#4261)
Installation
- dependencies: update dependency numpy to v2.2.5 @renovate[bot] (#4260)
- dependencies: update dependency marimo to v0.13.0 @renovate[bot] (#4256)
- dependencies: update dependency ruff to v0.11.6 @renovate[bot] (#4252)