brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 983c41a Raw
58 lines · cpp
1//===- IRMapping.cpp --------------------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "mlir/IR/IRMapping.h"10#include "mlir/IR/Builders.h"11#include "gtest/gtest.h"12 13#include "../../test/lib/Dialect/Test/TestDialect.h"14#include "../../test/lib/Dialect/Test/TestOps.h"15 16using namespace mlir;17 18TEST(IRMapping, TypedValue) {19  MLIRContext context;20 21  context.loadDialect<test::TestDialect>();22 23  OpBuilder builder(&context);24  Location loc = builder.getUnknownLoc();25 26  Block block;27  builder.setInsertionPointToEnd(&block);28 29  Value i64Val = test::TestOpConstant::create(30      builder, loc, builder.getI64Type(), builder.getI64IntegerAttr(0));31  Value f64Val = test::TestOpConstant::create(32      builder, loc, builder.getF64Type(), builder.getF64FloatAttr(0.0));33 34  IRMapping mapping;35  mapping.map(i64Val, f64Val);36  auto typedI64Val = cast<TypedValue<IntegerType>>(i64Val);37  EXPECT_EQ(mapping.lookup(typedI64Val), f64Val);38}39 40TEST(IRMapping, OperationClone) {41  MLIRContext ctx;42  ctx.allowUnregisteredDialects();43 44  OperationState state(UnknownLoc::get(&ctx), "no_results");45  Operation *noResultsOp = Operation::create(state);46 47  OperationState owner(UnknownLoc::get(&ctx), "owner");48  owner.addRegion()->emplaceBlock().push_back(noResultsOp);49  OwningOpRef<Operation *> ownerOp = Operation::create(owner);50 51  IRMapping irMap;52  OwningOpRef<Operation *> clonedOwnerOp = (*ownerOp)->clone(irMap);53 54  EXPECT_EQ(irMap.lookupOrNull(*ownerOp), *clonedOwnerOp);55  EXPECT_EQ(irMap.lookupOrNull(noResultsOp),56            &(*clonedOwnerOp)->getRegion(0).front().front());57}58