summaryrefslogtreecommitdiffstats
path: root/llvm/utils
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils')
-rw-r--r--llvm/utils/TableGen/IntrinsicEmitter.cpp50
-rw-r--r--llvm/utils/TableGen/TableGen.cpp28
-rw-r--r--llvm/utils/TableGen/TableGenBackends.h5
3 files changed, 53 insertions, 30 deletions
diff --git a/llvm/utils/TableGen/IntrinsicEmitter.cpp b/llvm/utils/TableGen/IntrinsicEmitter.cpp
index 78a17cde468..65d74ef90a4 100644
--- a/llvm/utils/TableGen/IntrinsicEmitter.cpp
+++ b/llvm/utils/TableGen/IntrinsicEmitter.cpp
@@ -34,7 +34,7 @@ public:
IntrinsicEmitter(RecordKeeper &R, bool T)
: Records(R), TargetOnly(T) {}
- void run(raw_ostream &OS);
+ void run(raw_ostream &OS, bool Enums);
void EmitPrefix(raw_ostream &OS);
@@ -56,7 +56,7 @@ public:
// IntrinsicEmitter Implementation
//===----------------------------------------------------------------------===//
-void IntrinsicEmitter::run(raw_ostream &OS) {
+void IntrinsicEmitter::run(raw_ostream &OS, bool Enums) {
emitSourceFileHeader("Intrinsic Function Source Fragment", OS);
CodeGenIntrinsicTable Ints(Records, TargetOnly);
@@ -66,29 +66,31 @@ void IntrinsicEmitter::run(raw_ostream &OS) {
EmitPrefix(OS);
- // Emit the enum information.
- EmitEnumInfo(Ints, OS);
-
- // Emit the target metadata.
- EmitTargetInfo(Ints, OS);
+ if (Enums) {
+ // Emit the enum information.
+ EmitEnumInfo(Ints, OS);
+ } else {
+ // Emit the target metadata.
+ EmitTargetInfo(Ints, OS);
- // Emit the intrinsic ID -> name table.
- EmitIntrinsicToNameTable(Ints, OS);
+ // Emit the intrinsic ID -> name table.
+ EmitIntrinsicToNameTable(Ints, OS);
- // Emit the intrinsic ID -> overload table.
- EmitIntrinsicToOverloadTable(Ints, OS);
+ // Emit the intrinsic ID -> overload table.
+ EmitIntrinsicToOverloadTable(Ints, OS);
- // Emit the intrinsic declaration generator.
- EmitGenerator(Ints, OS);
+ // Emit the intrinsic declaration generator.
+ EmitGenerator(Ints, OS);
- // Emit the intrinsic parameter attributes.
- EmitAttributes(Ints, OS);
+ // Emit the intrinsic parameter attributes.
+ EmitAttributes(Ints, OS);
- // Emit code to translate GCC builtins into LLVM intrinsics.
- EmitIntrinsicToBuiltinMap(Ints, true, OS);
+ // Emit code to translate GCC builtins into LLVM intrinsics.
+ EmitIntrinsicToBuiltinMap(Ints, true, OS);
- // Emit code to translate MS builtins into LLVM intrinsics.
- EmitIntrinsicToBuiltinMap(Ints, false, OS);
+ // Emit code to translate MS builtins into LLVM intrinsics.
+ EmitIntrinsicToBuiltinMap(Ints, false, OS);
+ }
EmitSuffix(OS);
}
@@ -839,6 +841,12 @@ void IntrinsicEmitter::EmitIntrinsicToBuiltinMap(
OS << "#endif\n\n";
}
-void llvm::EmitIntrinsics(RecordKeeper &RK, raw_ostream &OS, bool TargetOnly) {
- IntrinsicEmitter(RK, TargetOnly).run(OS);
+void llvm::EmitIntrinsicEnums(RecordKeeper &RK, raw_ostream &OS,
+ bool TargetOnly) {
+ IntrinsicEmitter(RK, TargetOnly).run(OS, /*Enums=*/true);
+}
+
+void llvm::EmitIntrinsicImpl(RecordKeeper &RK, raw_ostream &OS,
+ bool TargetOnly) {
+ IntrinsicEmitter(RK, TargetOnly).run(OS, /*Enums=*/false);
}
diff --git a/llvm/utils/TableGen/TableGen.cpp b/llvm/utils/TableGen/TableGen.cpp
index cf0b0c24f83..cf1404d8769 100644
--- a/llvm/utils/TableGen/TableGen.cpp
+++ b/llvm/utils/TableGen/TableGen.cpp
@@ -38,8 +38,10 @@ enum ActionType {
GenDFAPacketizer,
GenFastISel,
GenSubtarget,
- GenIntrinsic,
- GenTgtIntrinsic,
+ GenIntrinsicEnums,
+ GenIntrinsicImpl,
+ GenTgtIntrinsicEnums,
+ GenTgtIntrinsicImpl,
PrintEnums,
PrintSets,
GenOptParserDefs,
@@ -85,9 +87,13 @@ namespace {
"Generate a \"fast\" instruction selector"),
clEnumValN(GenSubtarget, "gen-subtarget",
"Generate subtarget enumerations"),
- clEnumValN(GenIntrinsic, "gen-intrinsic",
+ clEnumValN(GenIntrinsicEnums, "gen-intrinsic-enums",
+ "Generate intrinsic enums"),
+ clEnumValN(GenIntrinsicImpl, "gen-intrinsic-impl",
"Generate intrinsic information"),
- clEnumValN(GenTgtIntrinsic, "gen-tgt-intrinsic",
+ clEnumValN(GenTgtIntrinsicEnums, "gen-tgt-intrinsic-enums",
+ "Generate target intrinsic enums"),
+ clEnumValN(GenTgtIntrinsicImpl, "gen-tgt-intrinsic-impl",
"Generate target intrinsic information"),
clEnumValN(PrintEnums, "print-enums",
"Print enum values for a class"),
@@ -162,11 +168,17 @@ bool LLVMTableGenMain(raw_ostream &OS, RecordKeeper &Records) {
case GenSubtarget:
EmitSubtarget(Records, OS);
break;
- case GenIntrinsic:
- EmitIntrinsics(Records, OS);
+ case GenIntrinsicEnums:
+ EmitIntrinsicEnums(Records, OS);
break;
- case GenTgtIntrinsic:
- EmitIntrinsics(Records, OS, true);
+ case GenIntrinsicImpl:
+ EmitIntrinsicImpl(Records, OS);
+ break;
+ case GenTgtIntrinsicEnums:
+ EmitIntrinsicEnums(Records, OS, true);
+ break;
+ case GenTgtIntrinsicImpl:
+ EmitIntrinsicImpl(Records, OS, true);
break;
case GenOptParserDefs:
EmitOptParser(Records, OS);
diff --git a/llvm/utils/TableGen/TableGenBackends.h b/llvm/utils/TableGen/TableGenBackends.h
index 09f74aa017f..1329a6d833f 100644
--- a/llvm/utils/TableGen/TableGenBackends.h
+++ b/llvm/utils/TableGen/TableGenBackends.h
@@ -62,7 +62,10 @@ namespace llvm {
class raw_ostream;
class RecordKeeper;
-void EmitIntrinsics(RecordKeeper &RK, raw_ostream &OS, bool TargetOnly = false);
+void EmitIntrinsicEnums(RecordKeeper &RK, raw_ostream &OS,
+ bool TargetOnly = false);
+void EmitIntrinsicImpl(RecordKeeper &RK, raw_ostream &OS,
+ bool TargetOnly = false);
void EmitAsmMatcher(RecordKeeper &RK, raw_ostream &OS);
void EmitAsmWriter(RecordKeeper &RK, raw_ostream &OS);
void EmitCallingConv(RecordKeeper &RK, raw_ostream &OS);
OpenPOWER on IntegriCloud