summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/TableGen.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2018-06-23 02:02:38 +0000
committerReid Kleckner <rnk@google.com>2018-06-23 02:02:38 +0000
commitf5890e4e4317c1bb9a25f29a44ab009604f09e4b (patch)
treed565302ce953c36187b0ad7bb71e115f671e97c9 /llvm/utils/TableGen/TableGen.cpp
parent5c25346912689400f5a786790bde6138b2d96d07 (diff)
downloadbcm5719-llvm-f5890e4e4317c1bb9a25f29a44ab009604f09e4b.tar.gz
bcm5719-llvm-f5890e4e4317c1bb9a25f29a44ab009604f09e4b.zip
[IR] Split Intrinsics.inc into enums and implementations
Implements PR34259 Intrinsics.h is a very popular header. Most LLVM TUs care about things like dbg_value, but they don't care how they are implemented. After I split these out, IntrinsicImpl.inc is 1.7 MB, so this saves each LLVM TU from scanning 1.7 MB of source that gets pre-processed away. It also means we can modify intrinsic properties without triggering a full rebuild, but that's probably less of a win. I think the next best thing to do would be to split out the target intrinsics into their own header. Very, very few TUs care about target-specific intrinsics. It's very hard to split up the target independent intrinsics like llvm.expect, assume, and dbg.value, though. llvm-svn: 335407
Diffstat (limited to 'llvm/utils/TableGen/TableGen.cpp')
-rw-r--r--llvm/utils/TableGen/TableGen.cpp28
1 files changed, 20 insertions, 8 deletions
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);
OpenPOWER on IntegriCloud