| From 46ca491e1bbbc9ace2a91fe6a7b112c83b9b88cc Mon Sep 17 00:00:00 2001 |
| From: mephi42 <mephi42@gmail.com> |
| Date: Tue, 7 Aug 2018 17:42:59 +0200 |
| Subject: [PATCH 2/7] capstone: generate *GenSubtargetInfo.inc |
| |
| --- |
| utils/TableGen/SubtargetEmitter.cpp | 28 +++++++++++++++++++++++++++- |
| 1 file changed, 27 insertions(+), 1 deletion(-) |
| |
| diff --git a/utils/TableGen/SubtargetEmitter.cpp b/utils/TableGen/SubtargetEmitter.cpp |
| index c5da8d8142f..98ab3240472 100644 |
| --- a/utils/TableGen/SubtargetEmitter.cpp |
| +++ b/utils/TableGen/SubtargetEmitter.cpp |
| @@ -147,7 +147,9 @@ void SubtargetEmitter::Enumeration(raw_ostream &OS) { |
| if (N > MAX_SUBTARGET_FEATURES) |
| PrintFatalError("Too many subtarget features! Bump MAX_SUBTARGET_FEATURES."); |
| |
| +#ifndef CAPSTONE |
| OS << "namespace " << Target << " {\n"; |
| +#endif |
| |
| // Open enumeration. |
| OS << "enum {\n"; |
| @@ -158,12 +160,22 @@ void SubtargetEmitter::Enumeration(raw_ostream &OS) { |
| Record *Def = DefList[i]; |
| |
| // Get and emit name |
| - OS << " " << Def->getName() << " = " << i << ",\n"; |
| + OS << " " |
| +#ifdef CAPSTONE |
| + << Target << "_" |
| +#endif |
| + << Def->getName() << " = " |
| +#ifdef CAPSTONE |
| + << "1ULL << " |
| +#endif |
| + << i << ",\n"; |
| } |
| |
| // Close enumeration and namespace |
| OS << "};\n"; |
| +#ifndef CAPSTONE |
| OS << "} // end namespace " << Target << "\n"; |
| +#endif |
| } |
| |
| // |
| @@ -1709,14 +1721,27 @@ void SubtargetEmitter::emitGenMCSubtargetInfo(raw_ostream &OS) { |
| void SubtargetEmitter::run(raw_ostream &OS) { |
| emitSourceFileHeader("Subtarget Enumeration Source Fragment", OS); |
| |
| +#ifdef CAPSTONE |
| + OS << "/* Capstone Disassembly Engine, https://www.capstone-engine.org */\n" |
| + "/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */\n" |
| + "\n"; |
| +#endif |
| + |
| OS << "\n#ifdef GET_SUBTARGETINFO_ENUM\n"; |
| OS << "#undef GET_SUBTARGETINFO_ENUM\n\n"; |
| |
| +#ifndef CAPSTONE |
| OS << "namespace llvm {\n"; |
| +#endif |
| Enumeration(OS); |
| +#ifdef CAPSTONE |
| + OS << "\n"; |
| +#else |
| OS << "} // end namespace llvm\n\n"; |
| +#endif |
| OS << "#endif // GET_SUBTARGETINFO_ENUM\n\n"; |
| |
| +#ifndef CAPSTONE |
| OS << "\n#ifdef GET_SUBTARGETINFO_MC_DESC\n"; |
| OS << "#undef GET_SUBTARGETINFO_MC_DESC\n\n"; |
| |
| @@ -1857,6 +1882,7 @@ void SubtargetEmitter::run(raw_ostream &OS) { |
| OS << "} // end namespace llvm\n\n"; |
| |
| OS << "#endif // GET_SUBTARGETINFO_CTOR\n\n"; |
| +#endif |
| } |
| |
| namespace llvm { |
| -- |
| 2.19.1 |
| |