1*9a0e4156SSadaf EbrahimiFrom 46ca491e1bbbc9ace2a91fe6a7b112c83b9b88cc Mon Sep 17 00:00:00 2001
2*9a0e4156SSadaf EbrahimiFrom: mephi42 <[email protected]>
3*9a0e4156SSadaf EbrahimiDate: Tue, 7 Aug 2018 17:42:59 +0200
4*9a0e4156SSadaf EbrahimiSubject: [PATCH 2/7] capstone: generate *GenSubtargetInfo.inc
5*9a0e4156SSadaf Ebrahimi
6*9a0e4156SSadaf Ebrahimi---
7*9a0e4156SSadaf Ebrahimi utils/TableGen/SubtargetEmitter.cpp | 28 +++++++++++++++++++++++++++-
8*9a0e4156SSadaf Ebrahimi 1 file changed, 27 insertions(+), 1 deletion(-)
9*9a0e4156SSadaf Ebrahimi
10*9a0e4156SSadaf Ebrahimidiff --git a/utils/TableGen/SubtargetEmitter.cpp b/utils/TableGen/SubtargetEmitter.cpp
11*9a0e4156SSadaf Ebrahimiindex c5da8d8142f..98ab3240472 100644
12*9a0e4156SSadaf Ebrahimi--- a/utils/TableGen/SubtargetEmitter.cpp
13*9a0e4156SSadaf Ebrahimi+++ b/utils/TableGen/SubtargetEmitter.cpp
14*9a0e4156SSadaf Ebrahimi@@ -147,7 +147,9 @@ void SubtargetEmitter::Enumeration(raw_ostream &OS) {
15*9a0e4156SSadaf Ebrahimi   if (N > MAX_SUBTARGET_FEATURES)
16*9a0e4156SSadaf Ebrahimi     PrintFatalError("Too many subtarget features! Bump MAX_SUBTARGET_FEATURES.");
17*9a0e4156SSadaf Ebrahimi
18*9a0e4156SSadaf Ebrahimi+#ifndef CAPSTONE
19*9a0e4156SSadaf Ebrahimi   OS << "namespace " << Target << " {\n";
20*9a0e4156SSadaf Ebrahimi+#endif
21*9a0e4156SSadaf Ebrahimi
22*9a0e4156SSadaf Ebrahimi   // Open enumeration.
23*9a0e4156SSadaf Ebrahimi   OS << "enum {\n";
24*9a0e4156SSadaf Ebrahimi@@ -158,12 +160,22 @@ void SubtargetEmitter::Enumeration(raw_ostream &OS) {
25*9a0e4156SSadaf Ebrahimi     Record *Def = DefList[i];
26*9a0e4156SSadaf Ebrahimi
27*9a0e4156SSadaf Ebrahimi     // Get and emit name
28*9a0e4156SSadaf Ebrahimi-    OS << "  " << Def->getName() << " = " << i << ",\n";
29*9a0e4156SSadaf Ebrahimi+    OS << "  "
30*9a0e4156SSadaf Ebrahimi+#ifdef CAPSTONE
31*9a0e4156SSadaf Ebrahimi+       << Target << "_"
32*9a0e4156SSadaf Ebrahimi+#endif
33*9a0e4156SSadaf Ebrahimi+       << Def->getName() << " = "
34*9a0e4156SSadaf Ebrahimi+#ifdef CAPSTONE
35*9a0e4156SSadaf Ebrahimi+       << "1ULL << "
36*9a0e4156SSadaf Ebrahimi+#endif
37*9a0e4156SSadaf Ebrahimi+       << i << ",\n";
38*9a0e4156SSadaf Ebrahimi   }
39*9a0e4156SSadaf Ebrahimi
40*9a0e4156SSadaf Ebrahimi   // Close enumeration and namespace
41*9a0e4156SSadaf Ebrahimi   OS << "};\n";
42*9a0e4156SSadaf Ebrahimi+#ifndef CAPSTONE
43*9a0e4156SSadaf Ebrahimi   OS << "} // end namespace " << Target << "\n";
44*9a0e4156SSadaf Ebrahimi+#endif
45*9a0e4156SSadaf Ebrahimi }
46*9a0e4156SSadaf Ebrahimi
47*9a0e4156SSadaf Ebrahimi //
48*9a0e4156SSadaf Ebrahimi@@ -1709,14 +1721,27 @@ void SubtargetEmitter::emitGenMCSubtargetInfo(raw_ostream &OS) {
49*9a0e4156SSadaf Ebrahimi void SubtargetEmitter::run(raw_ostream &OS) {
50*9a0e4156SSadaf Ebrahimi   emitSourceFileHeader("Subtarget Enumeration Source Fragment", OS);
51*9a0e4156SSadaf Ebrahimi
52*9a0e4156SSadaf Ebrahimi+#ifdef CAPSTONE
53*9a0e4156SSadaf Ebrahimi+  OS << "/* Capstone Disassembly Engine, http://www.capstone-engine.org */\n"
54*9a0e4156SSadaf Ebrahimi+        "/* By Nguyen Anh Quynh <[email protected]>, 2013-2015 */\n"
55*9a0e4156SSadaf Ebrahimi+        "\n";
56*9a0e4156SSadaf Ebrahimi+#endif
57*9a0e4156SSadaf Ebrahimi+
58*9a0e4156SSadaf Ebrahimi   OS << "\n#ifdef GET_SUBTARGETINFO_ENUM\n";
59*9a0e4156SSadaf Ebrahimi   OS << "#undef GET_SUBTARGETINFO_ENUM\n\n";
60*9a0e4156SSadaf Ebrahimi
61*9a0e4156SSadaf Ebrahimi+#ifndef CAPSTONE
62*9a0e4156SSadaf Ebrahimi   OS << "namespace llvm {\n";
63*9a0e4156SSadaf Ebrahimi+#endif
64*9a0e4156SSadaf Ebrahimi   Enumeration(OS);
65*9a0e4156SSadaf Ebrahimi+#ifdef CAPSTONE
66*9a0e4156SSadaf Ebrahimi+  OS << "\n";
67*9a0e4156SSadaf Ebrahimi+#else
68*9a0e4156SSadaf Ebrahimi   OS << "} // end namespace llvm\n\n";
69*9a0e4156SSadaf Ebrahimi+#endif
70*9a0e4156SSadaf Ebrahimi   OS << "#endif // GET_SUBTARGETINFO_ENUM\n\n";
71*9a0e4156SSadaf Ebrahimi
72*9a0e4156SSadaf Ebrahimi+#ifndef CAPSTONE
73*9a0e4156SSadaf Ebrahimi   OS << "\n#ifdef GET_SUBTARGETINFO_MC_DESC\n";
74*9a0e4156SSadaf Ebrahimi   OS << "#undef GET_SUBTARGETINFO_MC_DESC\n\n";
75*9a0e4156SSadaf Ebrahimi
76*9a0e4156SSadaf Ebrahimi@@ -1857,6 +1882,7 @@ void SubtargetEmitter::run(raw_ostream &OS) {
77*9a0e4156SSadaf Ebrahimi   OS << "} // end namespace llvm\n\n";
78*9a0e4156SSadaf Ebrahimi
79*9a0e4156SSadaf Ebrahimi   OS << "#endif // GET_SUBTARGETINFO_CTOR\n\n";
80*9a0e4156SSadaf Ebrahimi+#endif
81*9a0e4156SSadaf Ebrahimi }
82*9a0e4156SSadaf Ebrahimi
83*9a0e4156SSadaf Ebrahimi namespace llvm {
84*9a0e4156SSadaf Ebrahimi--
85*9a0e4156SSadaf Ebrahimi2.19.1
86*9a0e4156SSadaf Ebrahimi
87