You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bump LLVM to b0b546d44777eb1fa25995384876bd14a006a929. (#7976)
This is not a totally routine bump.
Python support is changing in preparation for a switch to nanobind:
https://discourse.llvm.org/t/psa-python-binding-dependencies-changing/83376
There were also some more DialectConversion changes:
llvm/llvm-project#116470
`InstanceOpConversion`'s 1:1 in FlattenIO generalizes to the 1:N pattern, so we can drop the 1:1 pattern.
Secondly, it seems like the biggest violating thing here is the fact that we were missing a materialization for exploding struct outputs of `hw.module.extern`... This was actually a pretty glaring mistake in the existing IR, which had a check for invalid IR - woops!
Combined with folders, this also seems to have removed some (not all!) of the redundant struct_create/struct_explode patterns in the output.
With the 1:N operand adaptor, we no longer have to manually filter i0 operands inside a conversion pattern. Instead, this information is already implicitly available via the adaptor (i.e. that an operand was removed via. materialization). This also implies that 1:N patterns need to handle the case where the `OneToNOpAdaptor` is empty.
In general, it feels like one would _very_ rarely have to use both the `OneToNOpAdaptor` and `OpAdaptor` overloads at the same time - this should be reserved for when there is truly a difference between 1:1 and 1:N patterns. However, in practice - as this little fixing excercise has demonstrated - most patterns where `OneToNOpAdaptor` is relevant, are generalized 1:N patterns, and doesn't need a specific `1:1` overload.
---------
Co-authored-by: Morten Borup Petersen <[email protected]>
0 commit comments