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