| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
problem where it inline the map insertion call too aggressively. Before this
change it was producing a frame size of 24k for Select_store(), now it's down
to 10k (by calling this method rather than calling the map insertion operator).
llvm-svn: 26094
|
|
|
|
|
|
|
|
|
| |
Move all getTargetNode() out of SelectionDAG.h into SelectionDAG.cpp. This
prevents them from being inlined.
Change getTargetNode() so they return SDNode * instead of SDOperand to prevent
copying. It should also help compilation speed.
llvm-svn: 26083
|
|
|
|
|
|
| |
* Fix hasNUsesOfValue(), it should be const.
llvm-svn: 25990
|
|
|
|
| |
llvm-svn: 25935
|
|
|
|
| |
llvm-svn: 25920
|
|
|
|
| |
llvm-svn: 25855
|
|
|
|
|
|
| |
instead.
llvm-svn: 25780
|
|
|
|
|
|
| |
custom expansion of ConstantFP nodes.
llvm-svn: 25772
|
|
|
|
| |
llvm-svn: 25744
|
|
|
|
| |
llvm-svn: 25742
|
|
|
|
| |
llvm-svn: 25721
|
|
|
|
|
|
| |
with outputs or inputs are not supported yet. :)
llvm-svn: 25664
|
|
|
|
|
|
|
| |
Remove TLI.LowerVA* and replace it with SDNodes that are lowered the same
way as everything else.
llvm-svn: 25606
|
|
|
|
|
|
| |
of CALLSEQ_* nodes
llvm-svn: 25582
|
|
|
|
| |
llvm-svn: 25551
|
|
|
|
| |
llvm-svn: 25548
|
|
|
|
| |
llvm-svn: 25357
|
|
|
|
| |
llvm-svn: 25327
|
|
|
|
| |
llvm-svn: 25270
|
|
|
|
| |
llvm-svn: 25223
|
|
|
|
|
|
|
|
|
| |
Add dag combiner code to recognize rotl, rotr
Add ppc code to match rotl
Targets should add rotl/rotr patterns if they have them
llvm-svn: 25222
|
|
|
|
| |
llvm-svn: 25156
|
|
|
|
|
|
| |
inserted in the code.
llvm-svn: 25104
|
|
|
|
|
|
| |
drop it on the floor.
llvm-svn: 25044
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
void foo(double);
void bar(double X) { foo(X); }
to this:
bar:
save -96, %o6, %o6
or %g0, %i0, %o0
or %g0, %i1, %o1
call foo
nop
restore %g0, %g0, %g0
retl
nop
instead of this:
bar:
save -112, %o6, %o6
st %i1, [%i6+-4]
st %i0, [%i6+-8]
ldd [%i6+-8], %f0
std %f0, [%i6+-16]
ld [%i6+-12], %o1
ld [%i6+-16], %o0
call foo
nop
restore %g0, %g0, %g0
retl
nop
on V8.
llvm-svn: 24981
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
conversions. This allows V8 to compiles this:
void %test() {
call float %test2( float 1.000000e+00, float 2.000000e+00, double 3.000000e+00, double* null )
ret void
}
into:
test:
save -96, %o6, %o6
sethi 0, %o3
sethi 1049088, %o2
sethi 1048576, %o1
sethi 1040384, %o0
or %g0, %o3, %o4
call test2
nop
restore %g0, %g0, %g0
retl
nop
instead of:
test:
save -112, %o6, %o6
sethi 0, %o4
sethi 1049088, %l0
st %o4, [%i6+-12]
st %l0, [%i6+-16]
ld [%i6+-12], %o3
ld [%i6+-16], %o2
sethi 1048576, %o1
sethi 1040384, %o0
call test2
nop
restore %g0, %g0, %g0
retl
nop
llvm-svn: 24980
|
|
|
|
| |
llvm-svn: 24970
|
|
|
|
| |
llvm-svn: 24965
|
|
|
|
| |
llvm-svn: 24877
|
|
|
|
| |
llvm-svn: 24869
|
|
|
|
|
|
| |
creating graphs that cannot be scheduled.
llvm-svn: 24866
|
|
|
|
| |
llvm-svn: 24748
|
|
|
|
| |
llvm-svn: 24653
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
constant nodes with vector types. Also teach the asm printer how to print
ConstantPacked constant pool entries. This allows us to generate altivec
code such as the following, which adds a vector constantto a packed float.
LCPI1_0: <4 x float> < float 0.0e+0, float 0.0e+0, float 0.0e+0, float 1.0e+0 >
.space 4
.space 4
.space 4
.long 1065353216 ; float 1
.text
.align 4
.globl _foo
_foo:
lis r2, ha16(LCPI1_0)
la r2, lo16(LCPI1_0)(r2)
li r4, 0
lvx v0, r4, r2
lvx v1, r4, r3
vaddfp v0, v1, v0
stvx v0, r4, r3
blr
For the llvm code:
void %foo(<4 x float> * %a) {
entry:
%tmp1 = load <4 x float> * %a;
%tmp2 = add <4 x float> %tmp1, < float 0.0, float 0.0, float 0.0, float 1.0 >
store <4 x float> %tmp2, <4 x float> *%a
ret void
}
llvm-svn: 24616
|
|
|
|
|
|
|
|
| |
should come from the arbitrary ops map.
This fixes Regression/CodeGen/PowerPC/2005-12-01-Crash.ll
llvm-svn: 24571
|
|
|
|
|
|
|
|
|
|
| |
selecting a node and use a mix of getTargetNode() and SelectNodeTo. Because
SelectNodeTo didn't check the CSE maps for a preexisting node and didn't insert
its result into the CSE maps, we would sometimes miss a CSE opportunity.
This is extremely rare, but worth fixing for completeness.
llvm-svn: 24565
|
|
|
|
| |
llvm-svn: 24548
|
|
|
|
|
|
| |
replaceAllUses'ing.
llvm-svn: 24539
|
|
|
|
|
|
| |
GlobalValue * and index pair. Update getGlobalAddress() for symmetry.
llvm-svn: 24524
|
|
|
|
| |
llvm-svn: 24523
|
|
|
|
|
|
| |
contributed by Daniel Berlin, with a few cleanups here and there by me.
llvm-svn: 24515
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
vector operations (load, add, sub, mul).
This allows us to codegen:
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
}
on ppc as:
_foo:
lfs f0, 12(r3)
lfs f1, 8(r3)
lfs f2, 4(r3)
lfs f3, 0(r3)
fadds f0, f0, f0
fadds f1, f1, f1
fadds f2, f2, f2
fadds f3, f3, f3
stfs f0, 12(r3)
stfs f1, 8(r3)
stfs f2, 4(r3)
stfs f3, 0(r3)
blr
llvm-svn: 24484
|
|
|
|
| |
llvm-svn: 24418
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
packed types with an element count of 1, although more generic support is
coming. This allows LLVM to turn the following code:
void %foo(<1 x float> * %a) {
entry:
%tmp1 = load <1 x float> * %a;
%tmp2 = add <1 x float> %tmp1, %tmp1
store <1 x float> %tmp2, <1 x float> *%a
ret void
}
Into:
_foo:
lfs f0, 0(r3)
fadds f0, f0, f0
stfs f0, 0(r3)
blr
llvm-svn: 24416
|
|
|
|
| |
llvm-svn: 24300
|
|
|
|
|
|
|
|
| |
eliminates the vector, allows constant time removal of a node froma graph, and makes iteration over the all nodes list stable when adding
nodes to the graph.
llvm-svn: 24263
|
|
|
|
|
|
| |
individuallyallocated. Further, in the common case where a node has a single value, justreference an element from a small array. This is a small compile-time win.
llvm-svn: 24251
|
|
|
|
|
|
|
|
|
| |
array.This saves 12 bytes from SDNode, but doesn't speed things up substantially
(our graphs apparently already fit within the cache on my g5). In any case
this reduces memory usage.
llvm-svn: 24249
|
|
|
|
|
|
|
|
| |
set and eliminating the need to iterate whenever something is removed (which
can be really slow in some cases). Thx to Jim for pointing out something silly
I was getting stuck on. :)
llvm-svn: 24241
|
|
|
|
| |
llvm-svn: 23886
|