//===- VectorInterfaces.cpp - Unrollable vector operations -*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "mlir/Interfaces/VectorInterfaces.h" using namespace mlir; VectorType mlir::vector::detail::transferMaskType(VectorType vecType, AffineMap map) { auto i1Type = IntegerType::get(map.getContext(), 1); SmallVector shape; for (int64_t i = 0; i < vecType.getRank(); ++i) { // Only result dims have a corresponding dim in the mask. if (map.getResult(i).template isa()) { shape.push_back(vecType.getDimSize(i)); } } return shape.empty() ? VectorType() : VectorType::get(shape, i1Type); } //===----------------------------------------------------------------------===// // VectorUnroll Interfaces //===----------------------------------------------------------------------===// /// Include the definitions of the VectorUnroll interfaces. #include "mlir/Interfaces/VectorInterfaces.cpp.inc"