llvm-project/llvm/utils/TableGen/GlobalISel/GIMatchDagPredicateDependencyEdge.h
serge-sans-paille bd059b3bc9 Cleanup includes for LLVMTableGenGlobalISel
Based on the output of include-what-you-use. No big deal here, it's a utils
library and it doesn't seem to be used a lot across the codebase.

$ clang++ -E  -Iinclude -I../llvm/include ../llvm/utils/TableGen/GlobalISel/*.cpp -std=c++14 -fno-rtti -fno-exceptions | wc -l
before: 573143
after:  568908

Related Discourse thread: https://llvm.discourse.group/t/include-what-you-use-include-cleanup
Differential Revision: https://reviews.llvm.org/D118375
2022-01-28 11:50:50 +01:00

62 lines
2.4 KiB
C++

//===- GIMatchDagPredicateDependencyEdge - Ensure predicates have inputs --===//
//
// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_UTILS_TABLEGEN_GIMATCHDAGPREDICATEEDGE_H
#define LLVM_UTILS_TABLEGEN_GIMATCHDAGPREDICATEEDGE_H
#include "llvm/Support/Compiler.h"
namespace llvm {
class GIMatchDagInstr;
class GIMatchDagPredicate;
class GIMatchDagOperand;
class raw_ostream;
/// Represents a dependency that must be met to evaluate a predicate.
///
/// Instances of this class objects are owned by the GIMatchDag and are not
/// shareable between instances of GIMatchDag.
class GIMatchDagPredicateDependencyEdge {
/// The MI that must be available in order to test the predicate.
const GIMatchDagInstr *RequiredMI;
/// The MO that must be available in order to test the predicate. May be
/// nullptr when only the MI is required.
const GIMatchDagOperand *RequiredMO;
/// The Predicate that requires information from RequiredMI/RequiredMO.
const GIMatchDagPredicate *Predicate;
/// The Predicate operand that requires information from
/// RequiredMI/RequiredMO.
const GIMatchDagOperand *PredicateOp;
public:
GIMatchDagPredicateDependencyEdge(const GIMatchDagInstr *RequiredMI,
const GIMatchDagOperand *RequiredMO,
const GIMatchDagPredicate *Predicate,
const GIMatchDagOperand *PredicateOp)
: RequiredMI(RequiredMI), RequiredMO(RequiredMO), Predicate(Predicate),
PredicateOp(PredicateOp) {}
const GIMatchDagInstr *getRequiredMI() const { return RequiredMI; }
const GIMatchDagOperand *getRequiredMO() const { return RequiredMO; }
const GIMatchDagPredicate *getPredicate() const { return Predicate; }
const GIMatchDagOperand *getPredicateOp() const { return PredicateOp; }
void print(raw_ostream &OS) const;
#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
LLVM_DUMP_METHOD void dump() const;
#endif // if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
};
raw_ostream &operator<<(raw_ostream &OS,
const GIMatchDagPredicateDependencyEdge &N);
} // end namespace llvm
#endif // ifndef LLVM_UTILS_TABLEGEN_GIMATCHDAGPREDICATEEDGE_H