[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