diff options
author | Reid Kleckner <rnk@google.com> | 2018-06-23 02:02:38 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2018-06-23 02:02:38 +0000 |
commit | f5890e4e4317c1bb9a25f29a44ab009604f09e4b (patch) | |
tree | d565302ce953c36187b0ad7bb71e115f671e97c9 /llvm/utils/TableGen/TableGen.cpp | |
parent | 5c25346912689400f5a786790bde6138b2d96d07 (diff) | |
download | bcm5719-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.cpp | 28 |
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); |