1171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha//===- MCModuleYAML.h - MCModule YAMLIO implementation ----------*- C++ -*-===// 2171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha// 3171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha// The LLVM Compiler Infrastructure 4171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha// 5171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha// This file is distributed under the University of Illinois Open Source 6171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha// License. See LICENSE.TXT for details. 7171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha// 8171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha//===----------------------------------------------------------------------===// 9171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha/// 10171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha/// \file 11171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha/// \brief This file declares classes for handling the YAML representation 12171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha/// of MCModule. 13171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha/// 14171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha//===----------------------------------------------------------------------===// 15171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha 16cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#ifndef LLVM_MC_MCANALYSIS_MCMODULEYAML_H 17cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#define LLVM_MC_MCANALYSIS_MCMODULEYAML_H 18171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha 19171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha#include "llvm/ADT/StringRef.h" 20cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines#include "llvm/MC/MCAnalysis/MCModule.h" 21171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha#include "llvm/Support/raw_ostream.h" 22171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha 23171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougachanamespace llvm { 24171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha 25171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougachaclass MCInstrInfo; 26171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougachaclass MCRegisterInfo; 27171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha 28171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha/// \brief Dump a YAML representation of the MCModule \p MCM to \p OS. 29171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha/// \returns The empty string on success, an error message on failure. 30171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed BougachaStringRef mcmodule2yaml(raw_ostream &OS, const MCModule &MCM, 31171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha const MCInstrInfo &MII, const MCRegisterInfo &MRI); 32171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha 33171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha/// \brief Creates a new module and returns it in \p MCM. 34171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha/// \returns The empty string on success, an error message on failure. 3536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen HinesStringRef yaml2mcmodule(std::unique_ptr<MCModule> &MCM, StringRef YamlContent, 36171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha const MCInstrInfo &MII, const MCRegisterInfo &MRI); 37171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha 38171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha} // end namespace llvm 39171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha 40171ac8ca175bec5bc0bff8b3006850f70e0569c9Ahmed Bougacha#endif 41