- Jul 12, 2005
-
-
Reid Spencer authored
Add an example program that utilizes multiple threads in the JIT to process work. This was used by Evan Jones as the original test case for ensuring that the ExecutionEngine was thread safe. Original source by Evan Jones (adapted from other LLVM JIT examples) and made LLVM style compliant by Reid Spencer. llvm-svn: 22411
-
Nate Begeman authored
working before modifying the asm printer to use the subtarget info. llvm-svn: 22408
-
Nate Begeman authored
llvm-svn: 22407
-
Reid Spencer authored
llvm-svn: 22405
-
Reid Spencer authored
This patch completes the changes for making lli thread-safe. Here's the list of changes: * The Support/ThreadSupport* files were removed and replaced with the MutexGuard.h file since all ThreadSupport* declared was a Mutex Guard. The implementation of MutexGuard.h is now based on sys::Mutex which hides its implementation and makes it unnecessary to have the -NoSupport.h and -PThreads.h versions of ThreadSupport. * All places in ExecutionEngine that previously referred to "Mutex" now refer to sys::Mutex * All places in ExecutionEngine that previously referred to "MutexLocker" now refer to MutexGuard (this is frivolous but I believe the technically correct name for such a class is "Guard" not a "Locker"). These changes passed all of llvm-test. All we need now are some test cases that actually use multiple threads. llvm-svn: 22404
-
Reid Spencer authored
Add a Mutex class for thread synchronization in a platform-independent way. The current implementation only supports pthreads. Win32 use of Critical Sections will be added later. The design permits other threading models to be used if (and only if) pthreads is not available. llvm-svn: 22403
-
Reid Spencer authored
* Add check for pthread.h * Make sure -lpthread gets added to LIBS if its available llvm-svn: 22402
-
Reid Spencer authored
Make sure that -lpthread gets added to LIBS variable which puts it at the end of the tools' link commands, if libpthread.a is found. Add a test for pthread.h so we can use #ifdef HAVE_PTHREAD_H llvm-svn: 22401
-
Chris Lattner authored
llvm-svn: 22400
-
Chris Lattner authored
llvm-svn: 22399
-
Chris Lattner authored
llvm-svn: 22398
-
Andrew Lenharth authored
llvm-svn: 22397
-
Nate Begeman authored
llvm-svn: 22396
-
Jeff Cohen authored
llvm-svn: 22395
-
Jeff Cohen authored
llvm-svn: 22394
-
Jeff Cohen authored
llvm-svn: 22393
-
Nate Begeman authored
to the constructor. llvm-svn: 22392
-
Chris Lattner authored
llvm-svn: 22391
-
Chris Lattner authored
llvm-svn: 22390
-
Nate Begeman authored
Implement the X86 Subtarget. This consolidates the checks for target triple, and setting options based on target triple into one place. This allows us to convert the asm printer and isel over from being littered with "forDarwin", "forCygwin", etc. into just having the appropriate flags for each subtarget feature controlling the code for that feature. This patch also implements indirect external and weak references in the X86 pattern isel, for darwin. Next up is to convert over the asm printers to use this new interface. llvm-svn: 22389
-
Nate Begeman authored
llvm-svn: 22388
-
Chris Lattner authored
Instead of emitting a JIT stub that looks like this: internal void %l1_main_entry_2E_ce_wrapper(int) { header: %resolver = call sbyte* %getPointerToNamedFunction( sbyte* getelementptr ([20 x sbyte]* %l1_main_entry_2E_ce_name, int 0, int 0) ) ; <sbyte*> [#uses=1] %resolverCast = cast sbyte* %resolver to void (int)* ; <void (int)*> [#uses=1] call void %resolverCast( int %0 ) ret void } Emit one that looks like this: internal void %l1_main_entry_2E_ce_wrapper(int) { Entry: %fpcache = load void (int)** %l1_main_entry_2E_ce.fpcache ; <void (int)*> [#uses=2] %isNull = seteq void (int)* %fpcache, null ; <bool> [#uses=1] br bool %isNull, label %lookupfp, label %usecache usecache: ; preds = %lookupfp, %Entry %fp = phi void (int)* [ %resolverCast, %lookupfp ], [ %fpcache, %Entry ] ; <void (int)*> [#uses=1] call void %fp( int %0 ) ret void lookupfp: ; preds = %Entry %resolver = call sbyte* %getPointerToNamedFunction( sbyte* getelementptr ([20 x sbyte]* %l1_main_entry_2E_ce_name, int 0, int 0) ) ; <sbyte*> [#uses=1] %resolverCast = cast sbyte* %resolver to void (int)* ; <void (int)*> [#uses=2] store void (int)* %resolverCast, void (int)** %l1_main_entry_2E_ce.fpcache br label %usecache } This makes the JIT debugger *MUCH* faster on large programs, as getPointerToNamedFunction takes time linear with the size of the program, and before we would call it every time a function in the text module was called from the safe module (ouch!). llvm-svn: 22387
-
Chris Lattner authored
llvm-svn: 22386
-
Chris Lattner authored
llvm-svn: 22385
-
- Jul 11, 2005
-
-
Andrew Lenharth authored
llvm-svn: 22384
-
Andrew Lenharth authored
# define errno (*__errno_location ()) *shakes head llvm-svn: 22383
-
Chris Lattner authored
llvm-svn: 22382
-
Chris Lattner authored
llvm-svn: 22381
-
Chris Lattner authored
llvm-svn: 22380
-
Chris Lattner authored
llvm-svn: 22379
-
Chris Lattner authored
allows objdump to know which function we are emitting to: 00000000 <foo>: <---- 0: b8 01 00 00 00 mov $0x1,%eax 5: 03 44 24 04 add 0x4(%esp,1),%eax 9: c3 ret ... and allows .o files to be useful for linking :) llvm-svn: 22378
-
Chris Lattner authored
llvm-svn: 22377
-
Chris Lattner authored
after itself. llvm-svn: 22376
-
Chris Lattner authored
Add a *VERY INITIAL* machine code emitter class. This is enough to take this C function: int foo(int X) { return X +1; } and make objdump produce the following: $ objdump -d t-llvm.o t-llvm.o: file format elf32-i386 Disassembly of section .text: 00000000 <.text>: 0: b8 01 00 00 00 mov $0x1,%eax 5: 03 44 24 04 add 0x4(%esp,1),%eax 9: c3 ret Anything using branches or refering to the constant pool or requiring relocations will not work yet. llvm-svn: 22375
-
Chris Lattner authored
llvm-svn: 22374
-
Chris Lattner authored
llvm-svn: 22373
-
Chris Lattner authored
llvm-svn: 22372
-
Chris Lattner authored
characters from them. llvm-svn: 22371
-
Chris Lattner authored
llvm-svn: 22370
-
Chris Lattner authored
llvm-svn: 22369
-