1d0cb0d30SAlexander Belyaev //===- ComplexDialect.cpp - MLIR Complex Dialect --------------------------===//
2d0cb0d30SAlexander Belyaev //
3d0cb0d30SAlexander Belyaev // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4d0cb0d30SAlexander Belyaev // See https://llvm.org/LICENSE.txt for license information.
5d0cb0d30SAlexander Belyaev // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6d0cb0d30SAlexander Belyaev //
7d0cb0d30SAlexander Belyaev //===----------------------------------------------------------------------===//
8d0cb0d30SAlexander Belyaev
9a54f4eaeSMogball #include "mlir/Dialect/Arithmetic/IR/Arithmetic.h"
10d0cb0d30SAlexander Belyaev #include "mlir/Dialect/Complex/IR/Complex.h"
11a54f4eaeSMogball
12a54f4eaeSMogball using namespace mlir;
13d0cb0d30SAlexander Belyaev
14485cc55eSStella Laurenzo #include "mlir/Dialect/Complex/IR/ComplexOpsDialect.cpp.inc"
15485cc55eSStella Laurenzo
initialize()16a54f4eaeSMogball void complex::ComplexDialect::initialize() {
17d0cb0d30SAlexander Belyaev addOperations<
18d0cb0d30SAlexander Belyaev #define GET_OP_LIST
19d0cb0d30SAlexander Belyaev #include "mlir/Dialect/Complex/IR/ComplexOps.cpp.inc"
20d0cb0d30SAlexander Belyaev >();
21d0cb0d30SAlexander Belyaev }
22a54f4eaeSMogball
materializeConstant(OpBuilder & builder,Attribute value,Type type,Location loc)23a54f4eaeSMogball Operation *complex::ComplexDialect::materializeConstant(OpBuilder &builder,
24a54f4eaeSMogball Attribute value,
25a54f4eaeSMogball Type type,
26a54f4eaeSMogball Location loc) {
27*480cd4cbSRiver Riddle if (complex::ConstantOp::isBuildableWith(value, type)) {
28*480cd4cbSRiver Riddle return builder.create<complex::ConstantOp>(loc, type,
29*480cd4cbSRiver Riddle value.cast<ArrayAttr>());
30*480cd4cbSRiver Riddle }
31a54f4eaeSMogball if (arith::ConstantOp::isBuildableWith(value, type))
32a54f4eaeSMogball return builder.create<arith::ConstantOp>(loc, type, value);
33a54f4eaeSMogball return nullptr;
34a54f4eaeSMogball }
35