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