projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Sort the #include lines of the examples/... tree.
[oota-llvm.git]
/
examples
/
ParallelJIT
/
ParallelJIT.cpp
diff --git
a/examples/ParallelJIT/ParallelJIT.cpp
b/examples/ParallelJIT/ParallelJIT.cpp
index 92d8f27f8b190a0984bc6dfcd515a9546b9d3498..4c1eb49e16b314ed391334ec5ebccb87df95a7c4 100644
(file)
--- a/
examples/ParallelJIT/ParallelJIT.cpp
+++ b/
examples/ParallelJIT/ParallelJIT.cpp
@@
-17,16
+17,17
@@
// call into the JIT at the same time (or the best possible approximation of the
// same time). This test had assertion errors until I got the locking right.
// call into the JIT at the same time (or the best possible approximation of the
// same time). This test had assertion errors until I got the locking right.
-#include <pthread.h>
-#include "llvm/Module.h"
#include "llvm/Constants.h"
#include "llvm/DerivedTypes.h"
#include "llvm/Constants.h"
#include "llvm/DerivedTypes.h"
-#include "llvm/Instructions.h"
-#include "llvm/ModuleProvider.h"
-#include "llvm/ExecutionEngine/JIT.h"
-#include "llvm/ExecutionEngine/Interpreter.h"
#include "llvm/ExecutionEngine/GenericValue.h"
#include "llvm/ExecutionEngine/GenericValue.h"
+#include "llvm/ExecutionEngine/Interpreter.h"
+#include "llvm/ExecutionEngine/JIT.h"
+#include "llvm/Instructions.h"
+#include "llvm/LLVMContext.h"
+#include "llvm/Module.h"
+#include "llvm/Support/TargetSelect.h"
#include <iostream>
#include <iostream>
+#include <pthread.h>
using namespace llvm;
static Function* createAdd1(Module *M) {
using namespace llvm;
static Function* createAdd1(Module *M) {
@@
-34,15
+35,17
@@
static Function* createAdd1(Module *M) {
// function will have a return type of "int" and take an argument of "int".
// The '0' terminates the list of argument types.
Function *Add1F =
// function will have a return type of "int" and take an argument of "int".
// The '0' terminates the list of argument types.
Function *Add1F =
- cast<Function>(M->getOrInsertFunction("add1", Type::Int32Ty, Type::Int32Ty,
+ cast<Function>(M->getOrInsertFunction("add1",
+ Type::getInt32Ty(M->getContext()),
+ Type::getInt32Ty(M->getContext()),
(Type *)0));
// Add a basic block to the function. As before, it automatically inserts
// because of the last argument.
(Type *)0));
// Add a basic block to the function. As before, it automatically inserts
// because of the last argument.
- BasicBlock *BB =
new BasicBlock(
"EntryBlock", Add1F);
+ BasicBlock *BB =
BasicBlock::Create(M->getContext(),
"EntryBlock", Add1F);
// Get pointers to the constant `1'.
// Get pointers to the constant `1'.
- Value *One = ConstantInt::get(Type::
Int32Ty
, 1);
+ Value *One = ConstantInt::get(Type::
getInt32Ty(M->getContext())
, 1);
// Get pointers to the integer argument of the add1 function...
assert(Add1F->arg_begin() != Add1F->arg_end()); // Make sure there's an arg
// Get pointers to the integer argument of the add1 function...
assert(Add1F->arg_begin() != Add1F->arg_end()); // Make sure there's an arg
@@
-50,10
+53,10
@@
static Function* createAdd1(Module *M) {
ArgX->setName("AnArg"); // Give it a nice symbolic name for fun.
// Create the add instruction, inserting it into the end of BB.
ArgX->setName("AnArg"); // Give it a nice symbolic name for fun.
// Create the add instruction, inserting it into the end of BB.
- Instruction *Add = BinaryOperator::
c
reateAdd(One, ArgX, "addresult", BB);
+ Instruction *Add = BinaryOperator::
C
reateAdd(One, ArgX, "addresult", BB);
// Create the return instruction and add it to the basic block
// Create the return instruction and add it to the basic block
-
new ReturnInst(
Add, BB);
+
ReturnInst::Create(M->getContext(),
Add, BB);
// Now, function add1 is ready.
return Add1F;
// Now, function add1 is ready.
return Add1F;
@@
-63,46
+66,48
@@
static Function *CreateFibFunction(Module *M) {
// Create the fib function and insert it into module M. This function is said
// to return an int and take an int parameter.
Function *FibF =
// Create the fib function and insert it into module M. This function is said
// to return an int and take an int parameter.
Function *FibF =
- cast<Function>(M->getOrInsertFunction("fib", Type::Int32Ty, Type::Int32Ty,
+ cast<Function>(M->getOrInsertFunction("fib",
+ Type::getInt32Ty(M->getContext()),
+ Type::getInt32Ty(M->getContext()),
(Type *)0));
// Add a basic block to the function.
(Type *)0));
// Add a basic block to the function.
- BasicBlock *BB =
new BasicBlock(
"EntryBlock", FibF);
+ BasicBlock *BB =
BasicBlock::Create(M->getContext(),
"EntryBlock", FibF);
// Get pointers to the constants.
// Get pointers to the constants.
- Value *One = ConstantInt::get(Type::
Int32Ty
, 1);
- Value *Two = ConstantInt::get(Type::
Int32Ty
, 2);
+ Value *One = ConstantInt::get(Type::
getInt32Ty(M->getContext())
, 1);
+ Value *Two = ConstantInt::get(Type::
getInt32Ty(M->getContext())
, 2);
// Get pointer to the integer argument of the add1 function...
Argument *ArgX = FibF->arg_begin(); // Get the arg.
ArgX->setName("AnArg"); // Give it a nice symbolic name for fun.
// Create the true_block.
// Get pointer to the integer argument of the add1 function...
Argument *ArgX = FibF->arg_begin(); // Get the arg.
ArgX->setName("AnArg"); // Give it a nice symbolic name for fun.
// Create the true_block.
- BasicBlock *RetBB =
new BasicBlock(
"return", FibF);
+ BasicBlock *RetBB =
BasicBlock::Create(M->getContext(),
"return", FibF);
// Create an exit block.
// Create an exit block.
- BasicBlock* RecurseBB =
new BasicBlock(
"recurse", FibF);
+ BasicBlock* RecurseBB =
BasicBlock::Create(M->getContext(),
"recurse", FibF);
// Create the "if (arg < 2) goto exitbb"
// Create the "if (arg < 2) goto exitbb"
- Value *CondInst = new ICmpInst(
ICmpInst::ICMP_SLE, ArgX, Two, "cond", BB
);
-
new BranchInst
(RetBB, RecurseBB, CondInst, BB);
+ Value *CondInst = new ICmpInst(
*BB, ICmpInst::ICMP_SLE, ArgX, Two, "cond"
);
+
BranchInst::Create
(RetBB, RecurseBB, CondInst, BB);
// Create: ret int 1
// Create: ret int 1
-
new ReturnInst(
One, RetBB);
+
ReturnInst::Create(M->getContext(),
One, RetBB);
// create fib(x-1)
// create fib(x-1)
- Value *Sub = BinaryOperator::
c
reateSub(ArgX, One, "arg", RecurseBB);
- Value *CallFibX1 =
new CallInst
(FibF, Sub, "fibx1", RecurseBB);
+ Value *Sub = BinaryOperator::
C
reateSub(ArgX, One, "arg", RecurseBB);
+ Value *CallFibX1 =
CallInst::Create
(FibF, Sub, "fibx1", RecurseBB);
// create fib(x-2)
// create fib(x-2)
- Sub = BinaryOperator::
c
reateSub(ArgX, Two, "arg", RecurseBB);
- Value *CallFibX2 =
new CallInst
(FibF, Sub, "fibx2", RecurseBB);
+ Sub = BinaryOperator::
C
reateSub(ArgX, Two, "arg", RecurseBB);
+ Value *CallFibX2 =
CallInst::Create
(FibF, Sub, "fibx2", RecurseBB);
// fib(x-1)+fib(x-2)
Value *Sum =
// fib(x-1)+fib(x-2)
Value *Sum =
- BinaryOperator::
c
reateAdd(CallFibX1, CallFibX2, "addresult", RecurseBB);
+ BinaryOperator::
C
reateAdd(CallFibX1, CallFibX2, "addresult", RecurseBB);
// Create the return instruction and add it to the basic block
// Create the return instruction and add it to the basic block
-
new ReturnInst(
Sum, RecurseBB);
+
ReturnInst::Create(M->getContext(),
Sum, RecurseBB);
return FibF;
}
return FibF;
}
@@
-204,7
+209,8
@@
private:
waitFor = 0;
int result = pthread_cond_broadcast( &condition );
waitFor = 0;
int result = pthread_cond_broadcast( &condition );
- assert( result == 0 );
+ (void)result;
+ assert(result == 0);
}
size_t n;
}
size_t n;
@@
-229,17
+235,18
@@
void* callFunc( void* param )
return (void*)(intptr_t)gv.IntVal.getZExtValue();
}
return (void*)(intptr_t)gv.IntVal.getZExtValue();
}
-int main()
-{
+int main() {
+ InitializeNativeTarget();
+ LLVMContext Context;
+
// Create some module to put our function into it.
// Create some module to put our function into it.
- Module *M = new Module("test");
+ Module *M = new Module("test"
, Context
);
Function* add1F = createAdd1( M );
Function* fibF = CreateFibFunction( M );
// Now we create the JIT.
Function* add1F = createAdd1( M );
Function* fibF = CreateFibFunction( M );
// Now we create the JIT.
- ExistingModuleProvider* MP = new ExistingModuleProvider(M);
- ExecutionEngine* EE = ExecutionEngine::create(MP, false);
+ ExecutionEngine* EE = EngineBuilder(M).create();
//~ std::cout << "We just constructed this LLVM module:\n\n" << *M;
//~ std::cout << "\n\nRunning foo: " << std::flush;
//~ std::cout << "We just constructed this LLVM module:\n\n" << *M;
//~ std::cout << "\n\nRunning foo: " << std::flush;