//===- ComplexOps.cpp - MLIR Complex Operations ---------------------------===// // // 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/Dialect/Arith/IR/Arith.h" #include "mlir/Dialect/Complex/IR/Complex.h" #include "mlir/IR/Builders.h" #include "mlir/IR/BuiltinTypes.h" #include "mlir/IR/Matchers.h" #include "mlir/IR/PatternMatch.h" usingnamespacemlir; usingnamespacemlir::complex; //===----------------------------------------------------------------------===// // ConstantOp //===----------------------------------------------------------------------===// OpFoldResult ConstantOp::fold(FoldAdaptor adaptor) { … } void ConstantOp::getAsmResultNames( function_ref<void(Value, StringRef)> setNameFn) { … } bool ConstantOp::isBuildableWith(Attribute value, Type type) { … } LogicalResult ConstantOp::verify() { … } //===----------------------------------------------------------------------===// // BitcastOp //===----------------------------------------------------------------------===// OpFoldResult BitcastOp::fold(FoldAdaptor bitcast) { … } LogicalResult BitcastOp::verify() { … } struct MergeComplexBitcast final : OpRewritePattern<BitcastOp> { … }; struct MergeArithBitcast final : OpRewritePattern<arith::BitcastOp> { … }; void BitcastOp::getCanonicalizationPatterns(RewritePatternSet &results, MLIRContext *context) { … } //===----------------------------------------------------------------------===// // CreateOp //===----------------------------------------------------------------------===// OpFoldResult CreateOp::fold(FoldAdaptor adaptor) { … } //===----------------------------------------------------------------------===// // ImOp //===----------------------------------------------------------------------===// OpFoldResult ImOp::fold(FoldAdaptor adaptor) { … } namespace { template <typename OpKind, int ComponentIndex> struct FoldComponentNeg final : OpRewritePattern<OpKind> { … }; } // namespace void ImOp::getCanonicalizationPatterns(RewritePatternSet &results, MLIRContext *context) { … } //===----------------------------------------------------------------------===// // ReOp //===----------------------------------------------------------------------===// OpFoldResult ReOp::fold(FoldAdaptor adaptor) { … } void ReOp::getCanonicalizationPatterns(RewritePatternSet &results, MLIRContext *context) { … } //===----------------------------------------------------------------------===// // AddOp //===----------------------------------------------------------------------===// OpFoldResult AddOp::fold(FoldAdaptor adaptor) { … } //===----------------------------------------------------------------------===// // SubOp //===----------------------------------------------------------------------===// OpFoldResult SubOp::fold(FoldAdaptor adaptor) { … } //===----------------------------------------------------------------------===// // NegOp //===----------------------------------------------------------------------===// OpFoldResult NegOp::fold(FoldAdaptor adaptor) { … } //===----------------------------------------------------------------------===// // LogOp //===----------------------------------------------------------------------===// OpFoldResult LogOp::fold(FoldAdaptor adaptor) { … } //===----------------------------------------------------------------------===// // ExpOp //===----------------------------------------------------------------------===// OpFoldResult ExpOp::fold(FoldAdaptor adaptor) { … } //===----------------------------------------------------------------------===// // ConjOp //===----------------------------------------------------------------------===// OpFoldResult ConjOp::fold(FoldAdaptor adaptor) { … } //===----------------------------------------------------------------------===// // MulOp //===----------------------------------------------------------------------===// OpFoldResult MulOp::fold(FoldAdaptor adaptor) { … } //===----------------------------------------------------------------------===// // DivOp //===----------------------------------------------------------------------===// OpFoldResult DivOp::fold(FoldAdaptor adaptor) { … } //===----------------------------------------------------------------------===// // TableGen'd op method definitions //===----------------------------------------------------------------------===// #define GET_OP_CLASSES #include "mlir/Dialect/Complex/IR/ComplexOps.cpp.inc"