Evan Cheng
|
3a6b488265
|
Can't re-materialize mov r, imm in thumb since mov would clobber the condition code.
llvm-svn: 35479
|
2007-03-29 21:38:31 +00:00 |
|
Evan Cheng
|
bde0409264
|
Add support for hidden visibility to darwin/arm.
llvm-svn: 35448
|
2007-03-29 07:49:34 +00:00 |
|
Evan Cheng
|
a55449c051
|
Remove isLegalAddressImmediate.
llvm-svn: 35406
|
2007-03-28 01:53:55 +00:00 |
|
Lauro Ramos Venancio
|
8b2e32de5a
|
bugfix: sometimes the spiller puts a load between the "mov lr, pc" and "bx" of a CALL_NOLINK.
llvm-svn: 35381
|
2007-03-27 16:19:21 +00:00 |
|
Evan Cheng
|
968135bd3f
|
findRegisterUseOperand() changed.
llvm-svn: 35366
|
2007-03-26 22:41:48 +00:00 |
|
Chris Lattner
|
b19069959d
|
switch TargetLowering::getConstraintType to take the entire constraint,
not just the first letter. No functionality change.
llvm-svn: 35322
|
2007-03-25 02:14:49 +00:00 |
|
Dale Johannesen
|
44c0a5d545
|
repair x86 performance, dejagnu problems from previous change
llvm-svn: 35245
|
2007-03-21 21:51:52 +00:00 |
|
Evan Cheng
|
fb9c4c2edc
|
Updated.
llvm-svn: 35229
|
2007-03-20 22:32:39 +00:00 |
|
Dale Johannesen
|
3e422e3b49
|
do not share old induction variables when this would result in invalid
instructions (that would have to be split later)
llvm-svn: 35227
|
2007-03-20 21:54:54 +00:00 |
|
Lauro Ramos Venancio
|
11d7d3fcaf
|
bugfix: When the source register of CALL_NOLINK was LR, the following code was emitted:
mov lr, pc
bx lr
So, the function was not called.
llvm-svn: 35218
|
2007-03-20 17:57:23 +00:00 |
|
Evan Cheng
|
4fec9d7228
|
Make two piece constant generation as a single instruction. It's re-materialized as a load from constantpool.
llvm-svn: 35207
|
2007-03-20 08:11:30 +00:00 |
|
Evan Cheng
|
11976abd1e
|
New entry.
llvm-svn: 35206
|
2007-03-20 08:10:17 +00:00 |
|
Evan Cheng
|
41f4f032ee
|
Added MRegisterInfo hook to re-materialize an instruction.
llvm-svn: 35205
|
2007-03-20 08:09:38 +00:00 |
|
Chris Lattner
|
1ed603c0d9
|
fix indentation
llvm-svn: 35202
|
2007-03-20 02:25:53 +00:00 |
|
Dale Johannesen
|
c526b970ce
|
fix obvious comment bug
llvm-svn: 35196
|
2007-03-20 00:30:56 +00:00 |
|
Evan Cheng
|
8d374caead
|
Fix naming inconsistencies.
llvm-svn: 35163
|
2007-03-19 07:48:02 +00:00 |
|
Evan Cheng
|
7cbf4c4582
|
Special LDR instructions to load from non-pc-relative constantpools. These are
rematerializable. Only used for constant generation for now.
llvm-svn: 35162
|
2007-03-19 07:20:03 +00:00 |
|
Evan Cheng
|
389cf8e719
|
Constant generation instructions are re-materializable.
llvm-svn: 35161
|
2007-03-19 07:09:02 +00:00 |
|
Lauro Ramos Venancio
|
f756184c5e
|
Only ARMv6 has BSWAP.
Fix MultiSource/Applications/aha test.
llvm-svn: 35128
|
2007-03-16 22:54:16 +00:00 |
|
Evan Cheng
|
4858c6f781
|
Added isLegalAddressExpression(). Only allows X +/- C for now.
llvm-svn: 35122
|
2007-03-16 08:43:56 +00:00 |
|
Evan Cheng
|
7cbde8351a
|
AM2 can match 2^n +/- 1. e.g. ldr r3, [r2, r2, lsl #2]
llvm-svn: 35088
|
2007-03-13 21:05:54 +00:00 |
|
Evan Cheng
|
7b24b3e474
|
Zero is always a legal AM immediate.
llvm-svn: 35087
|
2007-03-13 20:37:59 +00:00 |
|
Evan Cheng
|
92712d4884
|
Implement getTargetLowering() or else LSR won't be using ARM specific hooks.
llvm-svn: 35077
|
2007-03-13 01:20:42 +00:00 |
|
Evan Cheng
|
7767159f08
|
Updated TargetLowering LSR addressing mode hooks for ARM and Thumb.
llvm-svn: 35075
|
2007-03-12 23:30:29 +00:00 |
|
Evan Cheng
|
a4e410aa9c
|
Minor stuff.
llvm-svn: 35049
|
2007-03-09 19:46:06 +00:00 |
|
Evan Cheng
|
d7201d12af
|
Add comments about LSR / ARM.
llvm-svn: 35048
|
2007-03-09 19:35:33 +00:00 |
|
Evan Cheng
|
2e6f19d8c8
|
Unfinished work and ideas related to register scavenger.
llvm-svn: 35047
|
2007-03-09 19:34:51 +00:00 |
|
Dale Johannesen
|
10a05b538d
|
apply comments from review of last patch
llvm-svn: 35045
|
2007-03-09 19:18:59 +00:00 |
|
Dale Johannesen
|
23c2498e23
|
Add some observations from CoreGraphics benchmark. Remove register
scavenging todo item, since it is now implemented.
llvm-svn: 35044
|
2007-03-09 17:58:17 +00:00 |
|
Evan Cheng
|
7ef8db2fb5
|
Implement inline asm modifier c.
llvm-svn: 35035
|
2007-03-08 22:42:46 +00:00 |
|
Evan Cheng
|
6445ce2423
|
Fix a typo.
llvm-svn: 35030
|
2007-03-08 21:59:30 +00:00 |
|
Evan Cheng
|
7d528d089c
|
Putting more constants which do not contain relocations into .literal{4|8|16}
llvm-svn: 35026
|
2007-03-08 08:31:54 +00:00 |
|
Evan Cheng
|
393fd04eb4
|
Change register allocation order to Dale's suggestion.
llvm-svn: 35021
|
2007-03-08 02:56:40 +00:00 |
|
Evan Cheng
|
2c3e4ab3a6
|
Bug fix. Not advancing the register scavenger iterator correctly.
llvm-svn: 35020
|
2007-03-08 02:55:08 +00:00 |
|
Evan Cheng
|
c79408b032
|
For Darwin, put constant data into .const, .const_data, .literal{4|8|16}
sections.
llvm-svn: 35017
|
2007-03-08 01:25:25 +00:00 |
|
Evan Cheng
|
51c3e53eb7
|
Only safe to use a call-clobbered or spilled callee-saved register as scratch register.
llvm-svn: 35010
|
2007-03-07 20:30:36 +00:00 |
|
Anton Korobeynikov
|
85d6c1ebad
|
Refactoring of formal parameter flags. Enable properly use of
zext/sext/aext stuff.
llvm-svn: 35008
|
2007-03-07 16:25:09 +00:00 |
|
Evan Cheng
|
493960579f
|
ARM always use register scavenger. No longer reserves R12.
llvm-svn: 34999
|
2007-03-07 02:46:23 +00:00 |
|
Evan Cheng
|
4e01b11512
|
Fix some brittle code. Watch out for cases where register scavenger is pointing to deleted instructions.
llvm-svn: 34998
|
2007-03-07 02:38:05 +00:00 |
|
Evan Cheng
|
9839628fd1
|
Fix one more Thumb eliminateFrameIndex bug.
llvm-svn: 34990
|
2007-03-07 00:12:18 +00:00 |
|
Evan Cheng
|
63ffd3e17f
|
Register scavenging is now on by default for ARM.
llvm-svn: 34987
|
2007-03-06 22:02:53 +00:00 |
|
Evan Cheng
|
6453ad00d2
|
Make load / store optimizer use register scavenger.
llvm-svn: 34986
|
2007-03-06 21:59:20 +00:00 |
|
Evan Cheng
|
228403bfcb
|
Code clean up. Prepare to use register scavenger.
llvm-svn: 34976
|
2007-03-06 18:02:41 +00:00 |
|
Evan Cheng
|
7c90fb2d67
|
Scavenge a register using the register scavenger when needed.
llvm-svn: 34966
|
2007-03-06 10:03:56 +00:00 |
|
Anton Korobeynikov
|
6da6c8c48b
|
Use new SDIselParamAttr enumeration. This removes "magick" constants
from formal attributes' flags processing.
llvm-svn: 34963
|
2007-03-06 08:12:33 +00:00 |
|
Lauro Ramos Venancio
|
3f855f6a54
|
Use init_array/fini_array sections for static contructors/destructors when the ABI is AAPCS.
Fix SingleSource/Regression/C/ConstructorDestructorAttributes test on arm-linux-gnueabi.
llvm-svn: 34931
|
2007-03-05 17:59:58 +00:00 |
|
Dale Johannesen
|
a6003a9eb6
|
eliminate unnecessary reset of SP in epilog on darwin
llvm-svn: 34824
|
2007-03-02 01:17:17 +00:00 |
|
Evan Cheng
|
07dcde8ba2
|
Use a spilled free callee-saved register as scratch register.
llvm-svn: 34785
|
2007-03-01 08:57:52 +00:00 |
|
Evan Cheng
|
8d3d4155e5
|
- Track which callee-saved registers are spilled.
- Some code clean up.
llvm-svn: 34783
|
2007-03-01 08:26:31 +00:00 |
|
Evan Cheng
|
f771a323c2
|
Switch from std::vector<bool> to BitVector.
llvm-svn: 34781
|
2007-03-01 07:52:44 +00:00 |
|