//===- OpBuildGen.cpp - TableGen OpBuildGen Tests -------------------------===// // // 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 // //===----------------------------------------------------------------------===// // // Test TableGen generated build() methods on Operations. // //===----------------------------------------------------------------------===// #include "TestDialect.h" #include "TestOps.h" #include "mlir/IR/Attributes.h" #include "mlir/IR/Builders.h" #include "mlir/IR/BuiltinTypes.h" #include "mlir/IR/Dialect.h" #include "gmock/gmock.h" #include <vector> namespace mlir { //===----------------------------------------------------------------------===// // Test Fixture //===----------------------------------------------------------------------===// static MLIRContext &getContext() { … } /// Test fixture for providing basic utilities for testing. class OpBuildGenTest : public ::testing::Test { … }; /// Test basic build methods. TEST_F(OpBuildGenTest, BasicBuildMethods) { … } /// The following 3 tests exercise build methods generated for operations /// with a combination of: /// /// single variadic arg x /// {single variadic result, non-variadic result, multiple variadic results} /// /// Specifically to test that ODS framework does not generate ambiguous /// build() methods that fail to compile. /// Test build methods for an Op with a single varadic arg and a single /// variadic result. TEST_F(OpBuildGenTest, BuildMethodsSingleVariadicArgAndResult) { … } /// Test build methods for an Op with a single varadic arg and a non-variadic /// result. TEST_F(OpBuildGenTest, BuildMethodsSingleVariadicArgNonVariadicResults) { … } /// Test build methods for an Op with a single varadic arg and multiple variadic /// result. TEST_F(OpBuildGenTest, BuildMethodsSingleVariadicArgAndMultipleVariadicResults) { … } // The next test checks suppression of ambiguous build methods for ops that // have a single variadic input, and single non-variadic result, and which // support the SameOperandsAndResultType trait and optionally the // InferOpTypeInterface interface. For such ops, the ODS framework generates // build methods with no result types as they are inferred from the input types. TEST_F(OpBuildGenTest, BuildMethodsSameOperandsAndResultTypeSuppression) { … } TEST_F(OpBuildGenTest, BuildMethodsRegionsAndInferredType) { … } TEST_F(OpBuildGenTest, BuildMethodsVariadicProperties) { … } } // namespace mlir