summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJakub Staszak <jstaszak@apple.com>2011-07-06 18:22:43 +0000
committerJakub Staszak <jstaszak@apple.com>2011-07-06 18:22:43 +0000
commit9da9934e27dfb48de77b80a3e20ed2d869b52024 (patch)
tree711368e52d6596eeb3273012758fe07e87213687 /include
parentd7c7e2ff7d3305e4bc5634902ec4b8406e9cefca (diff)
downloadllvm-9da9934e27dfb48de77b80a3e20ed2d869b52024.tar.gz
llvm-9da9934e27dfb48de77b80a3e20ed2d869b52024.tar.bz2
llvm-9da9934e27dfb48de77b80a3e20ed2d869b52024.tar.xz
Introduce "expect" intrinsic instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134516 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/InitializePasses.h1
-rw-r--r--include/llvm/Intrinsics.td5
-rw-r--r--include/llvm/LLVMContext.h3
-rw-r--r--include/llvm/LinkAllPasses.h1
-rw-r--r--include/llvm/Support/PassManagerBuilder.h1
-rw-r--r--include/llvm/Transforms/Scalar.h8
6 files changed, 18 insertions, 1 deletions
diff --git a/include/llvm/InitializePasses.h b/include/llvm/InitializePasses.h
index dfd924613e..0cd1222999 100644
--- a/include/llvm/InitializePasses.h
+++ b/include/llvm/InitializePasses.h
@@ -141,6 +141,7 @@ void initializeLoopUnrollPass(PassRegistry&);
void initializeLoopUnswitchPass(PassRegistry&);
void initializeLoopIdiomRecognizePass(PassRegistry&);
void initializeLowerAtomicPass(PassRegistry&);
+void initializeLowerExpectIntrinsicPass(PassRegistry&);
void initializeLowerIntrinsicsPass(PassRegistry&);
void initializeLowerInvokePass(PassRegistry&);
void initializeLowerSetJmpPass(PassRegistry&);
diff --git a/include/llvm/Intrinsics.td b/include/llvm/Intrinsics.td
index 14396244af..c854471036 100644
--- a/include/llvm/Intrinsics.td
+++ b/include/llvm/Intrinsics.td
@@ -266,6 +266,11 @@ def int_objectsize : Intrinsic<[llvm_anyint_ty], [llvm_ptr_ty, llvm_i1_ty],
[IntrNoMem]>,
GCCBuiltin<"__builtin_object_size">;
+//===------------------------- Expect Intrinsics --------------------------===//
+//
+def int_expect : Intrinsic<[llvm_anyint_ty], [LLVMMatchType<0>,
+ LLVMMatchType<0>], [IntrNoMem]>;
+
//===-------------------- Bit Manipulation Intrinsics ---------------------===//
//
diff --git a/include/llvm/LLVMContext.h b/include/llvm/LLVMContext.h
index 3502ff73c1..65146c31aa 100644
--- a/include/llvm/LLVMContext.h
+++ b/include/llvm/LLVMContext.h
@@ -39,7 +39,8 @@ public:
// compile-time performance optimization, not a correctness optimization.
enum {
MD_dbg = 0, // "dbg"
- MD_tbaa = 1 // "tbaa"
+ MD_tbaa = 1, // "tbaa"
+ MD_prof = 2 // "prof"
};
/// getMDKindID - Return a unique non-zero ID for the specified metadata kind.
diff --git a/include/llvm/LinkAllPasses.h b/include/llvm/LinkAllPasses.h
index c2ea8efb9a..a1945486fc 100644
--- a/include/llvm/LinkAllPasses.h
+++ b/include/llvm/LinkAllPasses.h
@@ -92,6 +92,7 @@ namespace {
(void) llvm::createLoopUnswitchPass();
(void) llvm::createLoopIdiomPass();
(void) llvm::createLoopRotatePass();
+ (void) llvm::createLowerExpectIntrinsicPass();
(void) llvm::createLowerInvokePass();
(void) llvm::createLowerSetJmpPass();
(void) llvm::createLowerSwitchPass();
diff --git a/include/llvm/Support/PassManagerBuilder.h b/include/llvm/Support/PassManagerBuilder.h
index 8ac507f8bc..ccb49e7287 100644
--- a/include/llvm/Support/PassManagerBuilder.h
+++ b/include/llvm/Support/PassManagerBuilder.h
@@ -152,6 +152,7 @@ public:
FPM.add(createCFGSimplificationPass());
FPM.add(createScalarReplAggregatesPass());
FPM.add(createEarlyCSEPass());
+ FPM.add(createLowerExpectIntrinsicPass());
}
/// populateModulePassManager - This sets up the primary pass manager.
diff --git a/include/llvm/Transforms/Scalar.h b/include/llvm/Transforms/Scalar.h
index e830435751..2187d4eb76 100644
--- a/include/llvm/Transforms/Scalar.h
+++ b/include/llvm/Transforms/Scalar.h
@@ -361,6 +361,14 @@ Pass *createObjCARCOptPass();
FunctionPass *createInstructionSimplifierPass();
extern char &InstructionSimplifierID;
+
+//===----------------------------------------------------------------------===//
+//
+// LowerExpectIntriniscs - Removes llvm.expect intrinsics and creates
+// "block_weights" metadata.
+FunctionPass *createLowerExpectIntrinsicPass();
+
+
} // End llvm namespace
#endif