#
6bd68ae8 |
| 17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Don't diddle VRSAVE if no registers need to be added/removed from it. This allows us to codegen functions as:
_test_rol: vspltisw v2, -12 vrlw v2, v2, v2 blr
instead of:
_
Don't diddle VRSAVE if no registers need to be added/removed from it. This allows us to codegen functions as:
_test_rol: vspltisw v2, -12 vrlw v2, v2, v2 blr
instead of:
_test_rol: mfvrsave r2, 256 mr r3, r2 mtvrsave r3 vspltisw v2, -12 vrlw v2, v2, v2 mtvrsave r2 blr
Testcase here: CodeGen/PowerPC/vec_vrsave.ll
llvm-svn: 27777
show more ...
|
#
72d7c270 |
| 17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Vectors that are known live-in and live-out are clearly already marked in the vrsave register for the caller. This allows us to codegen a function as:
_test_rol: mfspr r2, 256 mr r3
Vectors that are known live-in and live-out are clearly already marked in the vrsave register for the caller. This allows us to codegen a function as:
_test_rol: mfspr r2, 256 mr r3, r2 mtspr 256, r3 vspltisw v2, -12 vrlw v2, v2, v2 mtspr 256, r2 blr
instead of:
_test_rol: mfspr r2, 256 oris r3, r2, 40960 mtspr 256, r3 vspltisw v0, -12 vrlw v2, v0, v0 mtspr 256, r2 blr
llvm-svn: 27772
show more ...
|
#
6df094b4 |
| 17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Move some knowledge about registers out of the code emitter into the register info.
llvm-svn: 27770
|
#
0f28d48d |
| 17-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Use a small table instead of macros to do this conversion.
llvm-svn: 27769
|
#
f19bcd51 |
| 11-Apr-2006 |
Nate Begeman <natebegeman@mac.com> |
Fix SingleSource/UnitTests/Vector/sumarray-dbl
llvm-svn: 27594
|
#
1bb13209 |
| 11-Apr-2006 |
Nate Begeman <natebegeman@mac.com> |
Fix PR727, correctly handling large stack aligments on ppc
llvm-svn: 27593
|
#
02b3b72b |
| 11-Apr-2006 |
Jim Laskey <jlaskey@mac.com> |
Suppress debug label when not debug.
llvm-svn: 27588
|
#
2d7298c3 |
| 07-Apr-2006 |
Jim Laskey <jlaskey@mac.com> |
Foundation for call frame information.
llvm-svn: 27491
|
#
54007275 |
| 03-Apr-2006 |
Chris Lattner <sabre@nondot.org> |
Force use of a frame-pointer if there is anything on the stack that is aligned more than the OS keeps the stack aligned.
llvm-svn: 27381
|
#
d1aa1638 |
| 28-Mar-2006 |
Jim Laskey <jlaskey@mac.com> |
Expose base register for DwarfWriter. Refactor code accordingly.
llvm-svn: 27225
|
#
fa53b276 |
| 27-Mar-2006 |
Jim Laskey <jlaskey@mac.com> |
Translate llvm target registers to dwarf register numbers properly.
llvm-svn: 27180
|
#
3c43609f |
| 23-Mar-2006 |
Jim Laskey <jlaskey@mac.com> |
Add support to locate local variables in frames (early version.)
llvm-svn: 26994
|
#
4a66d694 |
| 22-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
When possible, custom lower 32-bit SINT_TO_FP to this:
_foo2: extsw r2, r3 std r2, -8(r1) lfd f0, -8(r1) fcfid f0, f0 frsp f1, f0 blr
instead of this
When possible, custom lower 32-bit SINT_TO_FP to this:
_foo2: extsw r2, r3 std r2, -8(r1) lfd f0, -8(r1) fcfid f0, f0 frsp f1, f0 blr
instead of this:
_foo2: lis r2, ha16(LCPI2_0) lis r4, 17200 xoris r3, r3, 32768 stw r3, -4(r1) stw r4, -8(r1) lfs f0, lo16(LCPI2_0)(r2) lfd f1, -8(r1) fsub f0, f1, f0 frsp f1, f0 blr
This speeds up Misc/pi from 2.44s->2.09s with LLC and from 3.01->2.18s with llcbeta (16.7% and 38.1% respectively).
llvm-svn: 26943
show more ...
|
#
8bf1c59e |
| 16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
remove dead variable
llvm-svn: 26813
|
#
91400bd4 |
| 16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
teach the ppc backend how to spill/reload vector regs
llvm-svn: 26806
|
#
0b27047a |
| 16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
in functions that use a lot of callee saved regs, this can be more than 5 instructions away.
llvm-svn: 26801
|
#
fd9f3e8e |
| 16-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
Add support for copying registers. still needed: spilling and reloading them
llvm-svn: 26800
|
#
02e2c18c |
| 13-Mar-2006 |
Chris Lattner <sabre@nondot.org> |
For functions that use vector registers, save VRSAVE, mark used registers, and update it on entry to each function, then restore it on exit.
This compiles:
void func(vfloat *a, vfloat *b, vfloat *c
For functions that use vector registers, save VRSAVE, mark used registers, and update it on entry to each function, then restore it on exit.
This compiles:
void func(vfloat *a, vfloat *b, vfloat *c) { *a = *b * *c + *c; }
to this:
_func: mfspr r2, 256 oris r6, r2, 49152 mtspr 256, r6 lvx v0, 0, r5 lvx v1, 0, r4 vmaddfp v0, v1, v0, v0 stvx v0, 0, r3 mtspr 256, r2 blr
GCC produces this (which has additional stack accesses):
_func: mfspr r0,256 stw r0,-4(r1) oris r0,r0,0xc000 mtspr 256,r0 lvx v0,0,r5 lvx v1,0,r4 lwz r12,-4(r1) vmaddfp v0,v0,v1,v0 stvx v0,0,r3 mtspr 256,r12 blr
llvm-svn: 26733
show more ...
|
#
bb53acd0 |
| 02-Feb-2006 |
Chris Lattner <sabre@nondot.org> |
Move isLoadFrom/StoreToStackSlot from MRegisterInfo to TargetInstrInfo,a far more logical place. Other methods should also be moved if anyoneis interested. :)
llvm-svn: 25913
|
#
2812e79c |
| 11-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Fix an off-by-one error that Nate's eagle eyes caught
llvm-svn: 25231
|
#
dc43a3f2 |
| 11-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
Use the auto-insert BuildMI constructor to avoid an explicit insert. No functionality change, just code cleanup.
llvm-svn: 25230
|
#
3280da3c |
| 11-Jan-2006 |
Chris Lattner <sabre@nondot.org> |
If a function has a non-zero sized frame, use an add to adjust the stack pointer in the epilog, not a load.
llvm-svn: 25229
|
#
7785e5b3 |
| 09-Jan-2006 |
Evan Cheng <evan.cheng@apple.com> |
New DAG node properties SNDPInFlag, SNDPOutFlag, and SNDPOptInFlag to replace hasInFlag, hasOutFlag.
llvm-svn: 25155
|
#
9ae48604 |
| 23-Dec-2005 |
Evan Cheng <evan.cheng@apple.com> |
* Removed the use of FLAG. Now use hasFlagIn and hasFlagOut instead. * Added a pseudo instruction (for each target) that represent "return void". This is a workaround for lack of optional flag oper
* Removed the use of FLAG. Now use hasFlagIn and hasFlagOut instead. * Added a pseudo instruction (for each target) that represent "return void". This is a workaround for lack of optional flag operand (return void is not lowered so it does not have a flag operand.)
llvm-svn: 24997
show more ...
|
Revision tags: llvmorg-1.6.0 |
|
#
3ee3e695 |
| 06-Nov-2005 |
Nate Begeman <natebegeman@mac.com> |
Add the necessary support to the ISel to allow targets to codegen the new alignment information appropriately. Includes code for PowerPC to support fixed-size allocas with alignment larger than the
Add the necessary support to the ISel to allow targets to codegen the new alignment information appropriately. Includes code for PowerPC to support fixed-size allocas with alignment larger than the stack. Support for arbitrarily aligned dynamic allocas coming soon.
llvm-svn: 24224
show more ...
|