diff --git a/llvm/include/llvm/Config/config.h.cmake b/llvm/include/llvm/Config/config.h.cmake --- a/llvm/include/llvm/Config/config.h.cmake +++ b/llvm/include/llvm/Config/config.h.cmake @@ -347,4 +347,7 @@ /* Whether Timers signpost passes in Xcode Instruments */ #cmakedefine01 LLVM_SUPPORT_XCODE_SIGNPOSTS +/* Define if LLVM was built with a dependency to the tensorflow compiler */ +#cmakedefine LLVM_HAVE_TF_AOT + #endif diff --git a/llvm/lib/Analysis/CMakeLists.txt b/llvm/lib/Analysis/CMakeLists.txt --- a/llvm/lib/Analysis/CMakeLists.txt +++ b/llvm/lib/Analysis/CMakeLists.txt @@ -1,38 +1,17 @@ -set(CommonMLSources MLInlineAdvisor.cpp) -set(ReleaseModeMLSources ReleaseModeModelRunner.cpp) -set(DevelopmentModeMLSources - DevelopmentModeInlineAdvisor.cpp - TFUtils.cpp - ) - if (DEFINED LLVM_HAVE_TF_AOT OR DEFINED LLVM_HAVE_TF_API) - set(MLPolicySources ${CommonMLSources}) if (DEFINED LLVM_HAVE_TF_AOT) include(TensorFlowCompile) tfcompile(models/inliner serve action InlinerSizeModel llvm::InlinerSizeModel) - list(APPEND ReleaseModeMLSources + list(APPEND GeneratedMLSources $ ${GENERATED_OBJS} ) - LIST(APPEND MLPolicySources ${ReleaseModeMLSources}) - else() - LIST(APPEND LLVM_OPTIONAL_SOURCES ${ReleaseModeMLSources}) endif() if (DEFINED LLVM_HAVE_TF_API) - LIST(APPEND MLPolicySources ${DevelopmentModeMLSources}) LIST(APPEND MLLinkDeps ${tensorflow_c_api}) - else() - LIST(APPEND LLVM_OPTIONAL_SOURCES ${DevelopmentModeMLSources}) endif() -else() - LIST(APPEND LLVM_OPTIONAL_SOURCES - ${CommonMLSources} - ${DevelopmentModeMLSources} - ${ReleaseModeMLSources} - ) endif() - add_llvm_component_library(LLVMAnalysis AliasAnalysis.cpp @@ -64,6 +43,7 @@ DemandedBits.cpp DependenceAnalysis.cpp DependenceGraphBuilder.cpp + DevelopmentModeInlineAdvisor.cpp DivergenceAnalysis.cpp DomPrinter.cpp DomTreeUpdater.cpp @@ -98,6 +78,7 @@ LoopUnrollAnalyzer.cpp LoopInfo.cpp LoopPass.cpp + MLInlineAdvisor.cpp MemDepPrinter.cpp MemDerefPrinter.cpp MemoryBuiltins.cpp @@ -120,6 +101,7 @@ RegionInfo.cpp RegionPass.cpp RegionPrinter.cpp + ReleaseModeModelRunner.cpp ScalarEvolution.cpp ScalarEvolutionAliasAnalysis.cpp ScalarEvolutionDivision.cpp @@ -128,6 +110,7 @@ StackSafetyAnalysis.cpp SyncDependenceAnalysis.cpp SyntheticCountsUtils.cpp + TFUtils.cpp TargetLibraryInfo.cpp TargetTransformInfo.cpp Trace.cpp @@ -139,7 +122,7 @@ ValueTracking.cpp VectorUtils.cpp VFABIDemangling.cpp - ${MLPolicySources} + ${GeneratedMLSources} ADDITIONAL_HEADER_DIRS ${LLVM_MAIN_INCLUDE_DIR}/llvm/Analysis diff --git a/llvm/lib/Analysis/DevelopmentModeInlineAdvisor.cpp b/llvm/lib/Analysis/DevelopmentModeInlineAdvisor.cpp --- a/llvm/lib/Analysis/DevelopmentModeInlineAdvisor.cpp +++ b/llvm/lib/Analysis/DevelopmentModeInlineAdvisor.cpp @@ -11,6 +11,9 @@ // loading of a model from a command line option. // //===----------------------------------------------------------------------===// +#include "llvm/Config/config.h" +#if defined(LLVM_HAVE_TF_API) + #include "llvm/Analysis/CallGraph.h" #include "llvm/Analysis/InlineSizeEstimatorAnalysis.h" #include "llvm/Analysis/MLInlineAdvisor.h" @@ -482,4 +485,5 @@ } return std::make_unique( M, MAM, std::move(Runner), GetDefaultAdvice, IsDoingInference); -} \ No newline at end of file +} +#endif // defined(LLVM_HAVE_TF_API) diff --git a/llvm/lib/Analysis/MLInlineAdvisor.cpp b/llvm/lib/Analysis/MLInlineAdvisor.cpp --- a/llvm/lib/Analysis/MLInlineAdvisor.cpp +++ b/llvm/lib/Analysis/MLInlineAdvisor.cpp @@ -11,6 +11,9 @@ // 'release' mode) or a runtime-loaded model (the 'development' case). // //===----------------------------------------------------------------------===// +#include "llvm/Config/config.h" +#if defined(LLVM_HAVE_TF_AOT) || defined(LLVM_HAVE_TF_API) + #include #include #include @@ -298,4 +301,5 @@ reportContextForRemark(R); return R; }); -} \ No newline at end of file +} +#endif // defined(LLVM_HAVE_TF_AOT) || defined(LLVM_HAVE_TF_API) diff --git a/llvm/lib/Analysis/ReleaseModeModelRunner.cpp b/llvm/lib/Analysis/ReleaseModeModelRunner.cpp --- a/llvm/lib/Analysis/ReleaseModeModelRunner.cpp +++ b/llvm/lib/Analysis/ReleaseModeModelRunner.cpp @@ -10,6 +10,8 @@ // Only inference is supported. // //===----------------------------------------------------------------------===// +#include "llvm/Config/config.h" +#if defined(LLVM_HAVE_TF_AOT) #include "llvm/Analysis/InlineModelFeatureMaps.h" #include "llvm/Analysis/MLInlineAdvisor.h" @@ -85,3 +87,4 @@ auto AOTRunner = std::make_unique(M.getContext()); return std::make_unique(M, MAM, std::move(AOTRunner)); } +#endif // defined(LLVM_HAVE_TF_AOT) diff --git a/llvm/lib/Analysis/TFUtils.cpp b/llvm/lib/Analysis/TFUtils.cpp --- a/llvm/lib/Analysis/TFUtils.cpp +++ b/llvm/lib/Analysis/TFUtils.cpp @@ -10,6 +10,8 @@ // This file implements utilities for interfacing with tensorflow C APIs. // //===----------------------------------------------------------------------===// +#include "llvm/Config/config.h" +#if defined(LLVM_HAVE_TF_API) #include "llvm/Analysis/Utils/TFUtils.h" #include "llvm/ADT/Twine.h" @@ -287,3 +289,4 @@ TFModelEvaluator::EvaluationResult::~EvaluationResult() {} TFModelEvaluator::~TFModelEvaluator() {} +#endif // defined(LLVM_HAVE_TF_API) diff --git a/llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn b/llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn --- a/llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn @@ -124,6 +124,7 @@ "RETSIGTYPE=void", "LLVM_GISEL_COV_ENABLED=", "LLVM_GISEL_COV_PREFIX=", + "LLVM_HAVE_TF_AOT=", "LLVM_WITH_Z3=", # FIXME: Set to 1 on mac once the 10.14 SDK is in common use. diff --git a/llvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn b/llvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn --- a/llvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn +++ b/llvm/utils/gn/secondary/llvm/lib/Analysis/BUILD.gn @@ -41,6 +41,7 @@ "DemandedBits.cpp", "DependenceAnalysis.cpp", "DependenceGraphBuilder.cpp", + "DevelopmentModeInlineAdvisor.cpp", "DivergenceAnalysis.cpp", "DomPrinter.cpp", "DomTreeUpdater.cpp", @@ -75,6 +76,7 @@ "LoopNestAnalysis.cpp", "LoopPass.cpp", "LoopUnrollAnalyzer.cpp", + "MLInlineAdvisor.cpp", "MemDepPrinter.cpp", "MemDerefPrinter.cpp", "MemoryBuiltins.cpp", @@ -97,6 +99,7 @@ "RegionInfo.cpp", "RegionPass.cpp", "RegionPrinter.cpp", + "ReleaseModeModelRunner.cpp", "ScalarEvolution.cpp", "ScalarEvolutionAliasAnalysis.cpp", "ScalarEvolutionDivision.cpp", @@ -106,6 +109,7 @@ "StackSafetyAnalysis.cpp", "SyncDependenceAnalysis.cpp", "SyntheticCountsUtils.cpp", + "TFUtils.cpp", "TargetLibraryInfo.cpp", "TargetTransformInfo.cpp", "Trace.cpp", @@ -118,10 +122,3 @@ "VectorUtils.cpp", ] } - -static_library("TensorFlow") { - sources = [ - "DevelopmentModeInlineAdvisor.cpp", - "TFUtils.cpp", - ] -}