//===- ConversionUtils.cpp ------------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// // // Utility functions for TOSA lowering // //===----------------------------------------------------------------------===// #include "mlir/Dialect/Tosa/Utils/CoversionUtils.h" using namespace mlir; using namespace mlir::tosa; SmallVector mlir::tosa::getNParallelLoopsAttrs(unsigned nParallelLoops) { return SmallVector(nParallelLoops, getParallelIteratorTypeName()); } SmallVector mlir::tosa::condenseValues(const SmallVector &values) { SmallVector condensedValues; for (auto value : values) if (value) condensedValues.push_back(value); return condensedValues; } Value mlir::tosa::clampFloatHelper(Location loc, Value arg, arith::ConstantOp min, arith::ConstantOp max, OpBuilder &rewriter) { Value minValue = rewriter.create(loc, arg, min); return rewriter.create(loc, minValue, max); } Value mlir::tosa::clampIntHelper(Location loc, Value arg, arith::ConstantOp min, arith::ConstantOp max, OpBuilder &rewriter) { auto smallerThanMin = rewriter.create(loc, arith::CmpIPredicate::slt, arg, min); auto minOrArg = rewriter.create(loc, smallerThanMin, min, arg); auto largerThanMax = rewriter.create(loc, arith::CmpIPredicate::slt, max, arg); return rewriter.create(loc, largerThanMax, max, minOrArg); }