| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
|  | 
llvm-svn: 24913
 | 
| | 
| 
| 
|  | 
llvm-svn: 24912
 | 
| | 
| 
| 
|  | 
llvm-svn: 24911
 | 
| | 
| 
| 
|  | 
llvm-svn: 24910
 | 
| | 
| 
| 
|  | 
llvm-svn: 24908
 | 
| | 
| 
| 
|  | 
llvm-svn: 24907
 | 
| | 
| 
| 
| 
| 
|  | 
the right vector of -1's as its operand.
llvm-svn: 24906
 | 
| | 
| 
| 
| 
| 
|  | 
scalarizing vectors)
llvm-svn: 24905
 | 
| | 
| 
| 
|  | 
llvm-svn: 24904
 | 
| | 
| 
| 
|  | 
llvm-svn: 24903
 | 
| | 
| 
| 
|  | 
llvm-svn: 24902
 | 
| | 
| 
| 
|  | 
llvm-svn: 24901
 | 
| | 
| 
| 
|  | 
llvm-svn: 24900
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
that were overloaded to work before and after the stackifier runs.  With the
new clean world, it is possible to write patterns for these instructions: woo!
This also adds a few simple patterns here and there, though there are a lot
still missing.  These should be easy to add though. :)
See the comments under "Floating Point Stack Support" for more details on
the new world order.
This patch as absolutely no effect on the generated code, woo!
llvm-svn: 24899
 | 
| | 
| 
| 
|  | 
llvm-svn: 24898
 | 
| | 
| 
| 
|  | 
llvm-svn: 24897
 | 
| | 
| 
| 
|  | 
llvm-svn: 24896
 | 
| | 
| 
| 
|  | 
llvm-svn: 24895
 | 
| | 
| 
| 
|  | 
llvm-svn: 24894
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This patch adds a -post-link-opts option to llvm-ld which allows an arbitrary
program to optimize bytecode after linking. The program is passed two file
names. The first is the input (linked bytecode) the second is where it must
place its output (presumably after optimizing). If the output file is bytecode,
it is used as a substitute for the input. This will allow things like poolalloc
to be written as a separate program instead of a loadable module or built into
LLVM.
llvm-svn: 24893
 | 
| | 
| 
| 
|  | 
llvm-svn: 24892
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
* Add --enable-debug-runtime option, defaults to disabled
* Pass the new config var, DEBUG_RUNTIME, to Makefiles
* Don't use -Wa,-strip-debug if debug-runtime is enabled
llvm-svn: 24891
 | 
| | 
| 
| 
|  | 
llvm-svn: 24890
 | 
| | 
| 
| 
|  | 
llvm-svn: 24889
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
for Darwin.
* Added lowering hook for ISD::RET. It inserts CopyToRegs for the return
  value (or store / fld / copy to ST(0) for floating point value). This
  eliminate the need to write C++ code to handle RET with variable number
  of operands.
llvm-svn: 24888
 | 
| | 
| 
| 
|  | 
llvm-svn: 24887
 | 
| | 
| 
| 
|  | 
llvm-svn: 24886
 | 
| | 
| 
| 
|  | 
llvm-svn: 24884
 | 
| | 
| 
| 
|  | 
llvm-svn: 24883
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
use too much stack space, overflowing the stack for large functions.  Instead
of emitting new SDOperands in each match block, we emit some common ones at
the top of SelectCode then reuse them when possible.
This reduces the stack size of SelectCode from 28K to 21K.  Note that GCC
compiles it to 512 bytes :-/
I've filed GCC PR 25505 to track this.
llvm-svn: 24882
 | 
| | 
| 
| 
| 
| 
|  | 
Only run lower-allocations and lower-select for the simple isel
llvm-svn: 24881
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
For example, instead of emitting this:
test:
        save -40112, %o6, %o6   ;; imm too large
        add %i6, -40016, %o0    ;; imm too large
        call caller
        nop
        restore %g0, %g0, %g0
        retl
        nop
emit this:
test:
        sethi 4194264, %g1
        or %g1, 848, %g1
        save %o6, %g1, %o6
        sethi 4194264, %g1
        add %g1, %i6, %g1
        add %i1, 944, %o0
        call caller
        nop
        restore %g0, %g0, %g0
        retl
        nop
which doesn't cause the assembler to barf.
llvm-svn: 24880
 | 
| | 
| 
| 
|  | 
llvm-svn: 24879
 | 
| | 
| 
| 
|  | 
llvm-svn: 24878
 | 
| | 
| 
| 
|  | 
llvm-svn: 24877
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
it keeps it from trying to add the same node to the node set
over and over if it matches multiple given patterns.  Also in cases where there
are a lot of patterns to be matched, and it matches an early one, this
will make the script run slightly faster.  It's more there because it logically
should be, than anything else, I mean, Python is never going to be fast ;-)
llvm-svn: 24876
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
last night, breaking crafty and twolf.  Make sure that the newly found
legal nodes are themselves not re-legalized until the next iteration.
Also, since this functionality exists now, we can reduce number of legalizer
iterations by depending on this behavior instead of having to misuse 'do
another iteration' to get the same effect.
llvm-svn: 24875
 | 
| | 
| 
| 
|  | 
llvm-svn: 24874
 | 
| | 
| 
| 
|  | 
llvm-svn: 24873
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
us to load and store vectors directly at a pointer (offset of zero) by
using r0 as the base register.  This also requires some asm printer work
to satisfy the darwin assembler.
For
void %foo(<4 x float> * %a) {
entry:
  %tmp1 = load <4 x float> * %a;
  %tmp2 = add <4 x float> %tmp1, %tmp1
  store <4 x float> %tmp2, <4 x float> *%a
  ret void
}
We now produce:
_foo:
        lvx v0, 0, r3
        vaddfp v0, v0, v0
        stvx v0, 0, r3
        blr
Instead of:
_foo:
        li r2, 0
        lvx v0, r2, r3
        vaddfp v0, v0, v0
        stvx v0, r2, r3
        blr
llvm-svn: 24872
 | 
| | 
| 
| 
|  | 
llvm-svn: 24871
 | 
| | 
| 
| 
|  | 
llvm-svn: 24870
 | 
| | 
| 
| 
|  | 
llvm-svn: 24869
 | 
| | 
| 
| 
|  | 
llvm-svn: 24868
 | 
| | 
| 
| 
|  | 
llvm-svn: 24867
 | 
| | 
| 
| 
| 
| 
|  | 
creating graphs that cannot be scheduled.
llvm-svn: 24866
 | 
| | 
| 
| 
| 
| 
|  | 
projects.
llvm-svn: 24865
 | 
| | 
| 
| 
| 
| 
|  | 
Make the dsa-alloc-list and dsa-free-list options hidden.
llvm-svn: 24864
 | 
| | 
| 
| 
|  | 
llvm-svn: 24863
 | 
| | 
| 
| 
| 
| 
|  | 
functions that allocate memory.
llvm-svn: 24862
 |