//===- llvm/CodeGen/GlobalISel/LegacyLegalizerInfo.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 // //===----------------------------------------------------------------------===// /// \file /// Interface for Targets to specify which operations they can successfully /// select and how the others should be expanded most efficiently. /// This implementation has been deprecated for a long time but it still in use /// in a few places. //===----------------------------------------------------------------------===// #ifndef LLVM_CODEGEN_GLOBALISEL_LEGACYLEGALIZERINFO_H #define LLVM_CODEGEN_GLOBALISEL_LEGACYLEGALIZERINFO_H #include "llvm/ADT/DenseMap.h" #include "llvm/CodeGen/TargetOpcodes.h" #include "llvm/CodeGenTypes/LowLevelType.h" #include <unordered_map> #include <vector> namespace llvm { struct LegalityQuery; namespace LegacyLegalizeActions { enum LegacyLegalizeAction : std::uint8_t { … }; } // end namespace LegacyLegalizeActions raw_ostream &operator<<(raw_ostream &OS, LegacyLegalizeActions::LegacyLegalizeAction Action); /// Legalization is decided based on an instruction's opcode, which type slot /// we're considering, and what the existing type is. These aspects are gathered /// together for convenience in the InstrAspect class. struct InstrAspect { … }; /// The result of a query. It either indicates a final answer of Legal or /// Unsupported or describes an action that must be taken to make an operation /// more legal. struct LegacyLegalizeActionStep { … }; class LegacyLegalizerInfo { … }; } // end namespace llvm #endif // LLVM_CODEGEN_GLOBALISEL_LEGACYLEGALIZERINFO_H