| //===- Tester.h -------------------------------------------------*- C++ -*-===// |
| // |
| // 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 |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file defines the Tester class used in the MLIR Reduce tool. |
| // |
| // A Tester object is passed as an argument to the reduction passes and it is |
| // used to run the interestingness testing script on the different generated |
| // reduced variants of the test case. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef MLIR_REDUCER_TESTER_H |
| #define MLIR_REDUCER_TESTER_H |
| |
| #include <vector> |
| |
| #include "mlir/IR/BuiltinOps.h" |
| #include "llvm/ADT/SmallString.h" |
| #include "llvm/Support/Error.h" |
| #include "llvm/Support/FileSystem.h" |
| #include "llvm/Support/Program.h" |
| |
| namespace mlir { |
| |
| /// This class is used to keep track of the testing environment of the tool. It |
| /// contains a method to run the interestingness testing script on a MLIR test |
| /// case file. |
| class Tester { |
| public: |
| enum class Interestingness { |
| True, |
| False, |
| Untested, |
| }; |
| |
| Tester(StringRef testScript, ArrayRef<std::string> testScriptArgs); |
| |
| /// Runs the interestingness testing script on a MLIR test case file. Returns |
| /// true if the interesting behavior is present in the test case or false |
| /// otherwise. |
| std::pair<Interestingness, size_t> isInteresting(ModuleOp module) const; |
| |
| /// Return whether the file in the given path is interesting. |
| Interestingness isInteresting(StringRef testCase) const; |
| |
| private: |
| StringRef testScript; |
| ArrayRef<std::string> testScriptArgs; |
| }; |
| |
| } // end namespace mlir |
| |
| #endif |