- Oct 18, 2004
-
-
Nate Begeman authored
Pass -single_module option to gcc when linking dynamic libraries for use with bugpoint, so that we can bugpoint multiple .cp files llvm-svn: 17102
-
Nate Begeman authored
llvm-svn: 17101
-
- Oct 17, 2004
-
-
Chris Lattner authored
This comes up many times in perlbmk and probably others. llvm-svn: 17100
-
Chris Lattner authored
other blocks. llvm-svn: 17099
-
Chris Lattner authored
unneccesary. This allows us to delete several hundred phi nodes of the form PHI(x,x,x,undef) from 253.perlbmk and probably other programs as well. This implements Mem2Reg/UndefValuesMerge.ll llvm-svn: 17098
-
Chris Lattner authored
llvm-svn: 17097
-
Chris Lattner authored
to think that PHI[4, undef] == 4. llvm-svn: 17096
-
Chris Lattner authored
so prepare for this. llvm-svn: 17095
-
Chris Lattner authored
0->field, which is illegal. Now we print ((foo*)0)->field. The second hunk is an optimization to not print undefined phi values. llvm-svn: 17094
-
Chris Lattner authored
last night. :) bork! llvm-svn: 17093
-
Reid Spencer authored
llvm-svn: 17092
-
Reid Spencer authored
llvm-svn: 17091
-
Reid Spencer authored
llvm-svn: 17090
-
Reid Spencer authored
llvm-svn: 17089
-
Reid Spencer authored
llvm-svn: 17088
-
Reid Spencer authored
llvm-svn: 17087
-
Reid Spencer authored
llvm-svn: 17086
-
Reid Spencer authored
llvm-svn: 17085
-
Reid Spencer authored
llvm-svn: 17084
-
Chris Lattner authored
double %test(uint %X) { %tmp.1 = cast uint %X to double ; <double> [#uses=1] ret double %tmp.1 } into: test: sub %ESP, 8 mov %EAX, DWORD PTR [%ESP + 12] mov %ECX, 0 mov DWORD PTR [%ESP], %EAX mov DWORD PTR [%ESP + 4], %ECX fild QWORD PTR [%ESP] add %ESP, 8 ret ... which basically zero extends to 8 bytes, then does an fild for an 8-byte signed int. Now we generate this: test: sub %ESP, 4 mov %EAX, DWORD PTR [%ESP + 8] mov DWORD PTR [%ESP], %EAX fild DWORD PTR [%ESP] shr %EAX, 31 fadd DWORD PTR [.CPItest_0 + 4*%EAX] add %ESP, 4 ret .section .rodata .align 4 .CPItest_0: .quad 5728578726015270912 This does a 32-bit signed integer load, then adds in an offset if the sign bit of the integer was set. It turns out that this is substantially faster than the preceeding sequence. Consider this testcase: unsigned a[2]={1,2}; volatile double G; void main() { int i; for (i=0; i<100000000; ++i ) G += a[i&1]; } On zion (a P4 Xeon, 3Ghz), this patch speeds up the testcase from 2.140s to 0.94s. On apoc, an athlon MP 2100+, this patch speeds up the testcase from 1.72s to 1.34s. Note that the program takes 2.5s/1.97s on zion/apoc with GCC 3.3 -O3 -fomit-frame-pointer. llvm-svn: 17083
-
Chris Lattner authored
us to use index registers for CPI's llvm-svn: 17082
-
Chris Lattner authored
index reg and scale llvm-svn: 17081
-
Chris Lattner authored
%X = and Y, constantint %Z = setcc %X, 0 instead of emitting: and %EAX, 3 test %EAX, %EAX je .LBBfoo2_2 # UnifiedReturnBlock We now emit: test %EAX, 3 je .LBBfoo2_2 # UnifiedReturnBlock This triggers 581 times on 176.gcc for example. llvm-svn: 17080
-
Chris Lattner authored
llvm-svn: 17079
-
Nate Begeman authored
1. optional shift left 2. and x, immX 3. and y, immY 4. or z, x, y ==> rlwimi z, x, y, shift, mask begin, mask end where immX == ~immY and immX is a run of set bits. This transformation fires 32 times on voronoi, once on espresso, and probably several dozen times on external benchmarks such as gcc. To put this in terms of actual code generated for struct B { unsigned a : 3; unsigned b : 2; }; void storeA (struct B *b, int v) { b->a = v;} void storeB (struct B *b, int v) { b->b = v;} Old: _storeA: rlwinm r2, r4, 0, 29, 31 lwz r4, 0(r3) rlwinm r4, r4, 0, 0, 28 or r2, r4, r2 stw r2, 0(r3) blr _storeB: rlwinm r2, r4, 3, 0, 28 rlwinm r2, r2, 0, 27, 28 lwz r4, 0(r3) rlwinm r4, r4, 0, 29, 26 or r2, r2, r4 stw r2, 0(r3) blr New: _storeA: lwz r2, 0(r3) rlwimi r2, r4, 0, 29, 31 stw r2, 0(r3) blr _storeB: lwz r2, 0(r3) rlwimi r2, r4, 3, 27, 28 stw r2, 0(r3) blr llvm-svn: 17078
-
Chris Lattner authored
llvm-svn: 17077
-
Chris Lattner authored
llvm-svn: 17076
-
Chris Lattner authored
for undef. llvm-svn: 17075
-
Chris Lattner authored
llvm-svn: 17074
-
Reid Spencer authored
llvm-svn: 17073
-
Reid Spencer authored
llvm-svn: 17072
-
Reid Spencer authored
that we undefine the macro before using its name in the definition. This can happen on Linux if _GNU_SOURCE is defined. llvm-svn: 17071
-
Chris Lattner authored
llvm-svn: 17070
-
Chris Lattner authored
llvm-svn: 17069
-
- Oct 16, 2004
-
-
Nate Begeman authored
flag rotate left word immediate then mask insert (rlwimi) as a two-address instruction, and update the ISel usage of the instruction accordingly. This will allow us to properly schedule rlwimi, and use it to efficiently codegen bitfield operations. llvm-svn: 17068
-
Chris Lattner authored
llvm-svn: 17067
-
Chris Lattner authored
ugly and giant constnat exprs in some programs. llvm-svn: 17066
-
Chris Lattner authored
involving %B instead of allowing any geps except %A's. llvm-svn: 17065
-
Misha Brukman authored
* Wrap at 80 cols llvm-svn: 17064
-
Chris Lattner authored
been defined yet! llvm-svn: 17063
-