| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
|  | 
llvm-svn: 22507
 | 
| | 
| 
| 
| 
| 
|  | 
memory (should do the same for arbitrary zero extended small negative constants)
llvm-svn: 22505
 | 
| | 
| 
| 
|  | 
llvm-svn: 22502
 | 
| | 
| 
| 
|  | 
llvm-svn: 22500
 | 
| | 
| 
| 
| 
| 
|  | 
happification)
llvm-svn: 22499
 | 
| | 
| 
| 
|  | 
llvm-svn: 22498
 | 
| | 
| 
| 
| 
| 
|  | 
places the constants in the allocated memory, rather than a malloc area
llvm-svn: 22497
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Remove the LoadHiAddr pseudo-instruction.
Optimization of stores to and loads from statics.
Force JIT to use new non-PIC codepaths.
llvm-svn: 22494
 | 
| | 
| 
| 
|  | 
llvm-svn: 22493
 | 
| | 
| 
| 
| 
| 
|  | 
PowerPC gets subtarget support up.
llvm-svn: 22489
 | 
| | 
| 
| 
| 
| 
|  | 
8-byte align doubles.
llvm-svn: 22486
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
explained in the comment.
This fixes UnitTests/2003-09-18-BitFieldTest on darwin
llvm-svn: 22483
 | 
| | 
| 
| 
|  | 
llvm-svn: 22480
 | 
| | 
| 
| 
| 
| 
|  | 
automatically generated from a target description.
llvm-svn: 22470
 | 
| | 
| 
| 
|  | 
llvm-svn: 22469
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This is the first incremental patch to implement this feature. It adds no
functionality to LLVM but setup up the information needed from targets in
order to implement the optimization correctly. Each target needs to specify
the maximum number of store operations for conversion of the llvm.memset,
llvm.memcpy, and llvm.memmove intrinsics into a sequence of store operations.
The limit needs to be chosen at the threshold of performance for such an
optimization (generally smallish). The target also needs to specify whether
the target can support unaligned stores for multi-byte store operations.
This helps ensure the optimization doesn't generate code that will trap on
an alignment errors.
More patches to follow.
llvm-svn: 22468
 | 
| | 
| 
| 
| 
| 
|  | 
as a signed compare.  This patch may fix PR597, but is correct in any case.
llvm-svn: 22465
 | 
| | 
| 
| 
| 
| 
| 
|  | 
expand the code to work for all integer datatypes.  This should unbreak
alpha.
llvm-svn: 22464
 | 
| | 
| 
| 
| 
| 
|  | 
This allows is to not emit empty sections when .data or .bss is not used.
llvm-svn: 22457
 | 
| | 
| 
| 
|  | 
llvm-svn: 22455
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
vector that represents the .o file at once, build up a vector for each
section of the .o file.  This is needed because the .o file writer needs
to be able to switch between sections as it emits them (e.g. switch
between the .text section and the .rel section when emitting code).
This patch has no functionality change.
llvm-svn: 22453
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
the target natively supports.  This eliminates some special-case code from
the x86 backend and generates better code as well.
For an i8 to f64 conversion, before & after:
_x87 before:
        subl $2, %esp
        movb 6(%esp), %al
        movsbw %al, %ax
        movw %ax, (%esp)
        filds (%esp)
        addl $2, %esp
        ret
_x87 after:
        subl $2, %esp
        movsbw 6(%esp), %ax
        movw %ax, (%esp)
        filds (%esp)
        addl $2, %esp
        ret
_sse before:
        subl $12, %esp
        movb 16(%esp), %al
        movsbl %al, %eax
        cvtsi2sd %eax, %xmm0
        addl $12, %esp
        ret
_sse after:
        subl $12, %esp
        movsbl 16(%esp), %eax
        cvtsi2sd %eax, %xmm0
        addl $12, %esp
        ret
llvm-svn: 22452
 | 
| | 
| 
| 
|  | 
llvm-svn: 22451
 | 
| | 
| 
| 
|  | 
llvm-svn: 22450
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
legalizer to eliminate them.  With this comes the expected code quality
improvements, such as, for this:
double foo(unsigned short X) { return X; }
we now generate this:
_foo:
        subl $4, %esp
        movzwl 8(%esp), %eax
        movl %eax, (%esp)
        fildl (%esp)
        addl $4, %esp
        ret
instead of this:
_foo:
        subl $4, %esp
        movw 8(%esp), %ax
        movzwl %ax, %eax   ;; Load not folded into this.
        movl %eax, (%esp)
        fildl (%esp)
        addl $4, %esp
        ret
-Chris
llvm-svn: 22449
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
SelectionDAGLegalize::ExpandLegalUINT_TO_FP method.
Add a new method, PromoteLegalUINT_TO_FP, which allows targets to request
that UINT_TO_FP operations be promoted to a larger input type.  This is
useful for targets that have some UINT_TO_FP or SINT_TO_FP operations but
not all of them (like X86).
The same should be done with SINT_TO_FP, but this patch does not do that
yet.
llvm-svn: 22447
 | 
| | 
| 
| 
|  | 
llvm-svn: 22446
 | 
| | 
| 
| 
| 
| 
|  | 
working, and Olden/power.
llvm-svn: 22441
 | 
| | 
| 
| 
|  | 
llvm-svn: 22440
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Add parenthesis around the value being negated; that way, if the value
begins with a minus sign (e.g. negative integer), we won't generate a
C predecrement operator by mistake.
llvm-svn: 22437
 | 
| | 
| 
| 
| 
| 
|  | 
gv and Graphviz.
llvm-svn: 22434
 | 
| | 
| 
| 
|  | 
llvm-svn: 22432
 | 
| | 
| 
| 
|  | 
llvm-svn: 22429
 | 
| | 
| 
| 
| 
| 
|  | 
of pthreads is missing that call (despite it violating the spec).
llvm-svn: 22423
 | 
| | 
| 
| 
|  | 
llvm-svn: 22422
 | 
| | 
| 
| 
|  | 
llvm-svn: 22420
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
It is not safe to call LegalizeOp on something that has already been legalized.
Instead, just force another iteration of legalization.
This could affect all platforms but X86, as this codepath is dynamically
dead on X86 (ISD::MEMSET and friends are legal).
llvm-svn: 22419
 | 
| | 
| 
| 
|  | 
llvm-svn: 22417
 | 
| | 
| 
| 
| 
| 
|  | 
working before modifying the asm printer to use the subtarget info.
llvm-svn: 22408
 | 
| | 
| 
| 
|  | 
llvm-svn: 22407
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
|  | 
llvm-svn: 22400
 | 
| | 
| 
| 
|  | 
llvm-svn: 22397
 | 
| | 
| 
| 
|  | 
llvm-svn: 22394
 | 
| | 
| 
| 
|  | 
llvm-svn: 22393
 | 
| | 
| 
| 
| 
| 
|  | 
to the constructor.
llvm-svn: 22392
 | 
| | 
| 
| 
|  | 
llvm-svn: 22391
 | 
| | 
| 
| 
|  | 
llvm-svn: 22390
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 |