- Nov 18, 2006
-
-
Chris Lattner authored
This speeds up yacr2 by 7% on a core2. llvm-svn: 31856
-
Chris Lattner authored
if (cond) goto BB2 BB1: ... return; BB2: ... Move BB1 to the end of the function so that the code falls through in the non-return case. This has the effect of moving assert (and other no-return call) bodies and return blocks out of loops. llvm-svn: 31855
-
Chris Lattner authored
only do these transformations if there are a small number of phi's. This speeds up Ptrdist/ks from 2.35s to 2.19s on my mac pro. llvm-svn: 31853
-
Reid Spencer authored
llvm-svn: 31841
-
Chris Lattner authored
Also, valist should create a pointer RC reg class value, not a GPRC value. llvm-svn: 31840
-
Chris Lattner authored
llvm-svn: 31839
-
Chris Lattner authored
llvm-svn: 31838
-
Chris Lattner authored
The algorithm it used before wasn't 100% correct, we now use an iterative expansion model. This fixes assembler errors when compiling 403.gcc with tail merging enabled. Change the way the branch selector works overall: Now, the isel generates PPC::BCC instructions (as it used to) directly, and these BCC instructions are emitted to the output or jitted directly if branches don't need expansion. Only if branches need expansion are instructions rewritten and created. This should make branch select faster, and eliminates the Bxx instructions from the .td file. llvm-svn: 31837
-
Chris Lattner authored
issues to the ground. llvm-svn: 31836
-
- Nov 17, 2006
-
-
Chris Lattner authored
value and CR reg #. This requires swapping the order of these everywhere that touches BCC and requires us to write custom matching logic for PPCcondbranch :( llvm-svn: 31835
-
Chris Lattner authored
llvm-svn: 31834
-
Chris Lattner authored
llvm-svn: 31833
-
Evan Cheng authored
clearing the upper 8-bits instead of issuing two instructions. This also eliminates the need to target the AH register which can be problematic on x86-64. llvm-svn: 31832
-
Jim Laskey authored
llvm-svn: 31830
-
Jim Laskey authored
llvm-svn: 31828
-
Jim Laskey authored
2. Offsets on 64-bit stores are still in bytes. llvm-svn: 31824
-
Jim Laskey authored
llvm-svn: 31823
-
Jim Laskey authored
llvm-svn: 31822
-
Bill Wendling authored
llvm-svn: 31819
-
Bill Wendling authored
soon replace all uses of those objects. llvm-svn: 31817
-
Bill Wendling authored
llvm-svn: 31816
-
Bill Wendling authored
llvm-svn: 31815
-
Bill Wendling authored
llvm-svn: 31814
-
Bill Wendling authored
llvm-svn: 31813
-
Bill Wendling authored
llvm-svn: 31812
-
Bill Wendling authored
llvm-svn: 31811
-
Bill Wendling authored
llvm-svn: 31810
-
Chris Lattner authored
and handle it like constant stride vars. This fixes some bad codegen in variable stride cases. For example, it compiles this: void foo(int k, int i) { for (k=i+i; k <= 8192; k+=i) flags2[k] = 0; } to: LBB1_1: #bb.preheader movl %eax, %ecx addl %ecx, %ecx movl L_flags2$non_lazy_ptr, %edx LBB1_2: #bb movb $0, (%edx,%ecx) addl %eax, %ecx cmpl $8192, %ecx jle LBB1_2 #bb LBB1_5: #return ret or (if the array is local and we are in dynamic-nonpic or static mode): LBB3_2: #bb movb $0, _flags2(%ecx) addl %eax, %ecx cmpl $8192, %ecx jle LBB3_2 #bb and: lis r2, ha16(L_flags2$non_lazy_ptr) lwz r2, lo16(L_flags2$non_lazy_ptr)(r2) slwi r3, r4, 1 LBB1_2: ;bb li r5, 0 add r6, r4, r3 stbx r5, r2, r3 cmpwi cr0, r6, 8192 bgt cr0, LBB1_5 ;return instead of: leal (%eax,%eax,2), %ecx movl %eax, %edx addl %edx, %edx addl L_flags2$non_lazy_ptr, %edx xorl %esi, %esi LBB1_2: #bb movb $0, (%edx,%esi) movl %eax, %edi addl %esi, %edi addl %ecx, %esi cmpl $8192, %esi jg LBB1_5 #return and: lis r2, ha16(L_flags2$non_lazy_ptr) lwz r2, lo16(L_flags2$non_lazy_ptr)(r2) mulli r3, r4, 3 slwi r5, r4, 1 li r6, 0 add r2, r2, r5 LBB1_2: ;bb li r5, 0 add r7, r3, r6 stbx r5, r2, r6 add r6, r4, r6 cmpwi cr0, r7, 8192 ble cr0, LBB1_2 ;bb This speeds up Benchmarks/Shootout/sieve from 8.533s to 6.464s and implements LoopStrengthReduce/var_stride_used_by_compare.ll llvm-svn: 31809
-
Bill Wendling authored
llvm-svn: 31806
-
Chris Lattner authored
llvm-svn: 31805
-
Bill Wendling authored
a #include of iostream. llvm-svn: 31800
-
Chris Lattner authored
llvm-svn: 31799
-
Bill Wendling authored
stream. It centralizes the use of std::cerr so that static c'tor/d'tors aren't scattered around all over the place. The way to use it is like this: DOUT << "This is a status line: " << Var << "\n"; If "-debug" is specified, it will print. Otherwise, it'll not print. If NDEBUG is defined, the DOUT does nothing. llvm-svn: 31798
-
Chris Lattner authored
llvm-svn: 31797
-
Evan Cheng authored
Correct instructions for moving data between GR64 and SSE registers; also correct load i64 / store i64 from v2i64. llvm-svn: 31795
-
Evan Cheng authored
llvm-svn: 31794
-
- Nov 16, 2006
-
-
Jim Laskey authored
This is a general clean up of the PowerPC ABI. Address several problems and bugs including making sure that the TOS links back to the previous frame, that the maximum call frame size is not included twice when using frame pointers, no longer growing the frame on calls, double storing of SP and a cleaner/faster dynamic alloca. llvm-svn: 31792
-
Chris Lattner authored
before printing it. llvm-svn: 31791
-
Evan Cheng authored
llvm-svn: 31790
-
Bill Wendling authored
llvm-svn: 31789
-