| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
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
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
working before modifying the asm printer to use the subtarget info.
llvm-svn: 22408
|
| |
|
|
| |
llvm-svn: 22407
|
| |
|
|
| |
llvm-svn: 22397
|
| |
|
|
| |
llvm-svn: 22394
|
| |
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 22388
|
| |
|
|
| |
llvm-svn: 22385
|
| |
|
|
| |
llvm-svn: 22381
|
| |
|
|
| |
llvm-svn: 22380
|
| |
|
|
|
|
|
|
| |
code emitter
after itself.
llvm-svn: 22376
|
| |
|
|
| |
llvm-svn: 22372
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is the last MVTSDNode.
This allows us to eliminate a bunch of special case code for handling
MVTSDNodes.
Also, remove some uses of dyn_cast that should really be cast (which is
cheaper in a release build).
llvm-svn: 22368
|
| |
|
|
| |
llvm-svn: 22366
|
| |
|
|
|
|
| |
Add support for running bugpoint on mac os x for intel
llvm-svn: 22351
|
| |
|
|
| |
llvm-svn: 22346
|
| |
|
|
|
|
| |
This fixes the regressions from last night.
llvm-svn: 22344
|
| |
|
|
| |
llvm-svn: 22341
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
XMM registers. There are many known deficiencies and fixmes, which will be
addressed ASAP. The major benefit of this work is that it will allow the
LLVM register allocator to allocate FP registers across basic blocks.
The x86 backend will still default to x87 style FP. To enable this work,
you must pass -enable-sse-scalar-fp and either -sse2 or -sse3 to llc.
An example before and after would be for:
double foo(double *P) { double Sum = 0; int i; for (i = 0; i < 1000; ++i)
Sum += P[i]; return Sum; }
The inner loop looks like the following:
x87:
.LBB_foo_1: # no_exit
fldl (%esp)
faddl (%eax,%ecx,8)
fstpl (%esp)
incl %ecx
cmpl $1000, %ecx
#FP_REG_KILL
jne .LBB_foo_1 # no_exit
SSE2:
addsd (%eax,%ecx,8), %xmm0
incl %ecx
cmpl $1000, %ecx
#FP_REG_KILL
jne .LBB_foo_1 # no_exit
llvm-svn: 22340
|
| |
|
|
|
|
|
|
|
|
|
|
| |
1. Pass Value*'s into lowering methods so that the proper pointers can be
added to load/stores from the valist
2. Intrinsics that return void should only return a token chain, not a token
chain/retval pair.
3. Rename LowerVAArgNext -> LowerVAArg, because VANext is long gone.
4. Now that we have Value*'s available in the lowering methods, pass them
into any load/stores from the valist that are emitted
llvm-svn: 22339
|
| |
|
|
| |
llvm-svn: 22336
|
| |
|
|
| |
llvm-svn: 22335
|
| |
|
|
| |
llvm-svn: 22332
|
| |
|
|
| |
llvm-svn: 22331
|
| |
|
|
| |
llvm-svn: 22330
|
| |
|
|
| |
llvm-svn: 22327
|
| |
|
|
|
|
|
|
| |
is at least overloading the right virtual methods. The implementations
are currently wrong though. This fixes Ptrdist/bc, but not other programs
(e.g. siod).
llvm-svn: 22326
|
| |
|
|
|
|
| |
by Aaron Gray, cleaned up by me.
llvm-svn: 22324
|
| |
|
|
|
|
| |
stores
llvm-svn: 22323
|
| |
|
|
|
|
| |
stores
llvm-svn: 22322
|
| |
|
|
| |
llvm-svn: 22321
|
| |
|
|
|
|
|
| |
thing as cygwin most of the time, and printing our alignments in log2
rather than number of bytes.
llvm-svn: 22316
|
| |
|
|
| |
llvm-svn: 22315
|
| |
|
|
|
|
| |
than just the pointer being loaded or stored
llvm-svn: 22311
|
| |
|
|
| |
llvm-svn: 22309
|
| |
|
|
| |
llvm-svn: 22308
|
| |
|
|
| |
llvm-svn: 22307
|
| |
|
|
| |
llvm-svn: 22306
|
| |
|
|
|
|
|
| |
rather than relying on the assembler. Only a few more pseudo instructions
left. Also merge load code paths.
llvm-svn: 22305
|
| |
|
|
| |
llvm-svn: 22303
|
| |
|
|
|
|
|
| |
is to use RA, which assumes the called function uses RA for the register
holding the return address when it issues a ret.
llvm-svn: 22301
|
| |
|
|
|
|
|
|
|
|
|
| |
working. The instruction selector changes will hopefully be coming later
this week once they are debugged. This is necessary to support the darwin
x86 FP model, and is recommended by intel as the replacement for x87. As
a bonus, the register allocator knows how to deal with these registers
across basic blocks, unliky the FP stackifier. This leads to significantly
better codegen in several cases.
llvm-svn: 22300
|