[all-commits] [llvm/llvm-project] 04ba47: [mlir][Vector] Add a rewrite pattern for better lo...
Nicolas Vasilache via All-commits
all-commits at lists.llvm.org
Mon Sep 18 10:03:00 PDT 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 04ba475e85cb97e9006a130855b76479b5149f47
https://github.com/llvm/llvm-project/commit/04ba475e85cb97e9006a130855b76479b5149f47
Author: Nicolas Vasilache <nicolasvasilache at users.noreply.github.com>
Date: 2023-09-18 (Mon, 18 Sep 2023)
Changed paths:
M mlir/include/mlir/Dialect/Vector/TransformOps/VectorTransformOps.td
M mlir/include/mlir/Dialect/Vector/Transforms/VectorRewritePatterns.h
M mlir/lib/Dialect/Vector/Transforms/VectorEmulateNarrowType.cpp
M mlir/test/Dialect/Vector/vector-rewrite-narrow-types.mlir
M mlir/test/Integration/Dialect/Vector/CPU/test-rewrite-narrow-types.mlir
Log Message:
-----------
[mlir][Vector] Add a rewrite pattern for better low-precision ext(bit… (#66648)
…cast) expansion
This revision adds a rewrite for sequences of vector `ext(bitcast)` to
use a more efficient sequence of vector operations comprising `shuffle`
and `bitwise` ops.
Such patterns appear naturally when writing quantization /
dequantization functionality with the vector dialect.
The rewrite performs a simple enumeration of each of the bits in the
result vector and determines its provenance in the source vector. The
enumeration is used to generate the proper sequence of `shuffle`,
`andi`, `ori` with shifts`.
The rewrite currently only applies to 1-D non-scalable vectors and bails
out if the final vector element type is not a multiple of 8. This is a
failsafe heuristic determined empirically: if the resulting type is not
an even number of bytes, further complexities arise that are not
improved by this pattern: the heavy lifting still needs to be done by
LLVM.
More information about the All-commits
mailing list