[mlir][VectorToLLVM] Fix crash in VectorInsertOpConversion with dynamic index (#183783)
VectorInsertOpConversion crashes with an assertion failure when
inserting a sub-vector at a dynamic position into a multi-dimensional
vector. The pattern calls getAsIntegers() on the position, which asserts
that all fold results are compile-time constant attributes.
The existing guard (checking llvm::IsaPred<Attribute>) only covered the
case where a scalar is inserted into the innermost dimension (the
extractvalue path). The guard was missing for the insertvalue path when
inserting a sub-vector at a dynamic position into a nested aggregate.
Fix: add the same guard before the llvm.insertvalue creation to return
failure() gracefully when any position index is dynamic, matching the
behavior of VectorExtractOpConversion.
Fixes #177829
Remove the IOMMU-specific bus_dmamap_sync() implementation and just call
the default implementation instead. The current #ifdef'ed out code just
doesn't make sense.
ok chris@
[mlir][IR] Generalize `DenseElementsAttr` to custom element types (#183891)
`DenseElementsAttr` supports only a hard-coded list of element types:
`int`, `index`, `float`, `complex`. This commit generalizes the
`DenseElementsAttr` infrastructure: it now supports arbitrary element
types, as long as they implement the new `DenseElementTypeInterface`.
The `DenseElementTypeInterface` has the following helper functions:
- `getDenseElementBitSize`: Query the size of an element in bits. (When
storing an element in memory, each element is padded to a full byte.
This is an existing limitation of the `DenseElementsAttr`; with an
exception for `i1`.)
- `convertToAttribute`: Attribute factory / deserializer. Converts bytes
into an MLIR attribute. The attribute provides the assembly format /
printer for a single element.
- `convertFromAttribute`: Serializer. Converts an MLIR attribute into
bytes.
Note: `convertToAttribute` / `convertFromAttribute` are mainly for
[26 lines not shown]
[VPlan] Materialize UF after unrolling (NFCI).
Move materialization of the symbolic UF directly to unrollByUF. At this
point, unrolling materializes the decision and it is natural to also
materialize the symbolic UF here.
Mk/Uses/electron.mk: Secure reproducibility of node modules tarball in case of pnpm
Formerly, node_modules directories produced by "pnpm install" were
used for node modules tarball. However, .modules.yaml file contained
in the tarball is not reliably reproducible and differs in some way
depending on the environment and/or timing where/when the tarball was
produced.
Instead of relying on node_modules directories, we use pnpm
store (produced by "pnpm fetch") for node modules tarball. We can use
the tarball later to install node modules into appropriate directories
using "pnpm install". Note that the timestamp "checkedAt" in each JSON
file in the pnpm store is reset to 0 to ensure reproducibility.
Reported by: feld (via private email)
Tested by: feld
Mk/Uses/electron.mk: Secure reproducibility of node modules tarball in case of pnpm
Formerly, node_modules directories produced by "pnpm install" were
used for node modules tarball. However, .modules.yaml file contained
in the tarball is not reliably reproducible and differs in some way
depending on the environment and/or timing where/when the tarball was
produced.
Instead of relying on node_modules directories, we use pnpm
store (produced by "pnpm fetch") for node modules tarball. We can use
the tarball later to install node modules into appropriate directories
using "pnpm install". Note that the timestamp "checkedAt" in each JSON
file in the pnpm store is reset to 0 to ensure reproducibility.
Reported by: feld (via private email)
Tested by: feld