- Dec 12, 2005
-
-
Chris Lattner authored
llvm-svn: 24678
-
Chris Lattner authored
llvm-svn: 24677
-
Evan Cheng authored
llvm-svn: 24675
-
Evan Cheng authored
base or index operands being selected. llvm-svn: 24674
-
Evan Cheng authored
first before the chain. e.g. int X; int foo(int x) { x += X + 37; return x; } If chain operand is selected first, we would generate: movl X, %eax movl 4(%esp), %ecx leal 37(%ecx,%eax), %eax rather than movl $37, %eax addl 4(%esp), %eax addl X, %eax which does not require %ecx. (Due to ADD32rm not matching.) llvm-svn: 24673
-
Andrew Lenharth authored
llvm-svn: 24672
-
Chris Lattner authored
llvm-svn: 24671
-
Evan Cheng authored
llvm-svn: 24670
-
Andrew Lenharth authored
llvm-svn: 24668
-
Chris Lattner authored
186.crafty by about 16% (from 15.109s to 13.045s) on my system. This turns allocas with unions/casts into scalars. For example crafty has something like this: union doub { unsigned short i[4]; long long d; }; int f(long long a) { return ((union doub){.d=a}).i[1]; } Instead of generating loads and stores to an alloca, we now promote the whole thing to a scalar long value. This implements: Transforms/ScalarRepl/AggregatePromote.ll llvm-svn: 24667
-
- Dec 11, 2005
-
-
Chris Lattner authored
llvm-svn: 24664
-
Chris Lattner authored
llvm-svn: 24663
-
Chris Lattner authored
llvm-svn: 24662
-
Chris Lattner authored
llvm-svn: 24661
-
Chris Lattner authored
llvm-svn: 24660
-
Chris Lattner authored
llvm-svn: 24659
-
Andrew Lenharth authored
FP select improvements (and likely breakage), oh and crazy people might want to *return* floating point values. Don't see why myself llvm-svn: 24658
-
- Dec 10, 2005
-
-
Nate Begeman authored
them in the PPC backend, to simplify some logic out of Select and SelectAddr. llvm-svn: 24657
-
Evan Cheng authored
llvm-svn: 24656
-
Evan Cheng authored
* Added X86 dec patterns. llvm-svn: 24654
-
Evan Cheng authored
llvm-svn: 24653
-
Nate Begeman authored
hopefully use patterns in the near future. llvm-svn: 24651
-
- Dec 09, 2005
-
-
Chris Lattner authored
must be a pointer. This removes a type check out of the code generated by tblgen for load matching. llvm-svn: 24650
-
Evan Cheng authored
llvm-svn: 24648
-
Chris Lattner authored
llvm-svn: 24646
-
Chris Lattner authored
linking the entire program into one bc file. llvm-svn: 24645
-
Chris Lattner authored
out to me. llvm-svn: 24644
-
Andrew Lenharth authored
llvm-svn: 24641
-
- Dec 08, 2005
-
-
Chris Lattner authored
1. Only forward subst offsets into loads and stores, not into arbitrary things, where it will likely become a load. 2. If the source is a cast from pointer, forward subst the cast as well, allowing us to fold the cast away (improving cases when the cast is from an alloca or global). This hasn't been fully tested, but does appear to further reduce register pressure and improve code. Lets let the testers grind on it a bit. :) llvm-svn: 24640
-
Chris Lattner authored
llvm-svn: 24639
-
Evan Cheng authored
llvm-svn: 24638
-
Evan Cheng authored
llvm-svn: 24637
-
Evan Cheng authored
false if the match is not profitable. e.g. leal 1(%eax), %eax. * Added patterns for X86 integer loads and LEA32. llvm-svn: 24635
-
- Dec 07, 2005
-
-
Nate Begeman authored
type when the target did not support them. Also teach Legalize how to expand ConstantVecs. This allows us to generate _test: lwz r2, 12(r3) lwz r4, 8(r3) lwz r5, 4(r3) lwz r6, 0(r3) addi r2, r2, 4 addi r4, r4, 3 addi r5, r5, 2 addi r6, r6, 1 stw r2, 12(r3) stw r4, 8(r3) stw r5, 4(r3) stw r6, 0(r3) blr For: void %test(%v4i *%P) { %T = load %v4i* %P %S = add %v4i %T, <int 1, int 2, int 3, int 4> store %v4i %S, %v4i * %P ret void } On PowerPC. llvm-svn: 24633
-
Chris Lattner authored
if the target supports the resultant sextinreg llvm-svn: 24632
-
Chris Lattner authored
llvm-svn: 24631
-
Chris Lattner authored
when the types match up. This allows the X86 backend to compile: sbyte %toggle_value(sbyte* %tmp.1) { %tmp.2 = load sbyte* %tmp.1 ret sbyte %tmp.2 } to this: _toggle_value: mov %EAX, DWORD PTR [%ESP + 4] movsx %EAX, BYTE PTR [%EAX] ret instead of this: _toggle_value: mov %EAX, DWORD PTR [%ESP + 4] movsx %EAX, BYTE PTR [%EAX] movsx %EAX, %AL ret noticed in Shootout/objinst. -Chris llvm-svn: 24630
-
Andrew Lenharth authored
llvm-svn: 24628
-
- Dec 06, 2005
-
-
Chris Lattner authored
llvm-svn: 24627
-
Andrew Lenharth authored
more decent branches for FP. I might have to make some intermediate nodes to actually be able to use the DAG for FPcmp llvm-svn: 24625
-