[all-commits] [llvm/llvm-project] 8d64df: [mlir][Vector] Revisit VectorToSCF.

Nicolas Vasilache via All-commits all-commits at lists.llvm.org
Mon Sep 7 02:20:33 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 8d64df9f139038b48344dd9f1f20a38b22aba8c9
      https://github.com/llvm/llvm-project/commit/8d64df9f139038b48344dd9f1f20a38b22aba8c9
  Author: Nicolas Vasilache <ntv at google.com>
  Date:   2020-09-07 (Mon, 07 Sep 2020)

  Changed paths:
    M mlir/include/mlir/Dialect/Vector/EDSC/Intrinsics.h
    M mlir/include/mlir/Dialect/Vector/VectorOps.td
    A mlir/integration_test/Dialect/Vector/CPU/test-transfer-to-loops.mlir
    M mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp
    M mlir/lib/Conversion/VectorToSCF/VectorToSCF.cpp
    M mlir/lib/Dialect/Vector/VectorOps.cpp
    M mlir/test/Conversion/StandardToLLVM/convert-static-memref-ops.mlir
    M mlir/test/Conversion/VectorToSCF/vector-to-loops.mlir
    M mlir/test/EDSC/builder-api-test.cpp

  Log Message:
  -----------
  [mlir][Vector] Revisit VectorToSCF.

Vector to SCF conversion still had issues due to the interaction with the natural alignment derived by the LLVM data layout. One traditional workaround is to allocate aligned. However, this does not always work for vector sizes that are non-powers of 2.

This revision implements a more portable mechanism where the intermediate allocation is always a memref of elemental vector type. AllocOp is extended to use the natural LLVM DataLayout alignment for non-scalar types, when the alignment is not specified in the first place.

An integration test is added that exercises the transfer to scf.for + scalar lowering with a 5x5 transposition.

Differential Revision: https://reviews.llvm.org/D87150




More information about the All-commits mailing list