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