|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| | llvm-svn: 131431 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | ("T is 1 if the target symbol S has type STT_FUNC and the
symbol addresses a Thumb instruction ;it is 0 otherwise."
from "ELF for the ARM Architecture" 4.7.1.2)
Patch by Koan-Sin Tan!
llvm-svn: 131406 | 
| | 
| 
| 
| | llvm-svn: 131189 | 
| | 
| 
| 
| 
| 
| 
| 
| | intrinsic call. This prevents it from being reordered so that it appears
*before* the setjmp intrinsic (thus making it completely useless).
<rdar://problem/9409683>
llvm-svn: 131174 | 
| | 
| 
| 
| 
| 
| 
| | DWARF stuff also gets fixed up by ELFARMAsmBackend::ApplyFixup(),
but the offset is not guaranteed to be mod 4 == 0 as in text/data. 
llvm-svn: 131137 | 
| | 
| 
| 
| 
| 
| | lane) for size 32
llvm-svn: 131085 | 
| | 
| 
| 
| 
| 
| 
| | Tablegen will invent its own names for these indexes, and the register file is a
bit simpler.
llvm-svn: 131059 | 
| | 
| 
| 
| 
| 
| | Patch by Stephen Hines.
llvm-svn: 131045 | 
| | 
| 
| 
| 
| 
| | functionality change.
llvm-svn: 131012 | 
| | 
| 
| 
| | llvm-svn: 130984 | 
| | 
| 
| 
| | llvm-svn: 130854 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | sub-registers.
LiveVariables doesn't understand that clobbering D0 and D1 completely overwrites
Q0, so if Q0 is live-in to a function, its live range will extend beyond a
function call that only clobbers D0 and D1. This shows up in the
ARM/2009-11-01-NeonMoves test case.
LiveVariables should probably implement the much stricter rules for physreg
liveness that RAFast imposes - a physreg is killed by the first use of any
alias.
llvm-svn: 130801 | 
| | 
| 
| 
| | llvm-svn: 130766 | 
| | 
| 
| 
| 
| 
| | it's possible.
llvm-svn: 130764 | 
| | 
| 
| 
| | llvm-svn: 130763 | 
| | 
| 
| 
| 
| 
| 
| 
| | model constants which can be added to base registers via add-immediate
instructions which don't require an additional register to materialize
the immediate.
llvm-svn: 130743 | 
| | 
| 
| 
| | llvm-svn: 130716 | 
| | 
| 
| 
| | llvm-svn: 130558 | 
| | 
| 
| 
| | llvm-svn: 130557 | 
| | 
| 
| 
| 
| 
| | ARM/Thumb2 patterns.
llvm-svn: 130552 | 
| | 
| 
| 
| 
| 
| | if it ever did it needs the def machinery.
llvm-svn: 130549 | 
| | 
| 
| 
| | llvm-svn: 130546 | 
| | 
| 
| 
| 
| 
| 
| | Fix a rather obscure crash caused by ARM fast-isel generating code which redefines a register.
rdar://problem/9338332 .
llvm-svn: 130539 | 
| | 
| 
| 
| 
| 
| | for bools, but is a start.
llvm-svn: 130534 | 
| | 
| 
| 
| 
| 
| | that associate sections with expressions.
llvm-svn: 130517 | 
| | 
| 
| 
| 
| 
| | Generalization of Nate Begeman's patch!
llvm-svn: 130502 | 
| | 
| 
| 
| 
| 
| | There are probably more instances of this floating around.
llvm-svn: 130474 | 
| | 
| 
| 
| | llvm-svn: 130464 | 
| | 
| 
| 
| | llvm-svn: 130463 | 
| | 
| 
| 
| | llvm-svn: 130462 | 
| | 
| 
| 
| 
| 
| 
| 
| | redefines a register.
rdar://problem/9338332 .
llvm-svn: 130454 | 
| | 
| 
| 
| 
| 
| | if it means we get a fallthrough.
llvm-svn: 130404 | 
| | 
| 
| 
| 
| 
| 
| 
| | immediate patterns in arm to using the pattern.
Handles rdar://9299434
llvm-svn: 130386 | 
| | 
| 
| 
| 
| 
| 
| | This fixes clang generated blocks' variables' debug info.
Radar 9279956.
llvm-svn: 130373 | 
| | 
| 
| 
| 
| 
| | value is zero so it does not add a NULL expr operand.
llvm-svn: 130330 | 
| | 
| 
| 
| 
| 
| | location expressions.
llvm-svn: 130326 | 
| | 
| 
| 
| 
| 
| | rdar://9326019
llvm-svn: 130234 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | register class inflation.
The hook will be used by the register allocator when recomputing register
classes after removing constraints.
Thumb1 code doesn't allow anything larger than tGPR, and x86 needs to ensure
that the spill size doesn't change.
llvm-svn: 130228 | 
| | 
| 
| 
| 
| 
| | space, if requested, will be used for complex addresses of the Blocks' variables.
llvm-svn: 130178 | 
| | 
| 
| 
| | llvm-svn: 130097 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Fixes Thumb2 ADCS and SBCS lowering: <rdar://problem/9275821>.
t2ADCS/t2SBCS are now pseudo instructions, consistent with ARM, so the
assembly printer correctly prints the 's' suffix.
Fixes Thumb2 adde -> SBC matching to check for live/dead carry flags.
Fixes the internal ARM machine opcode mnemonic for ADCS/SBCS.
Fixes ARM SBC lowering to check for live carry (potential bug).
llvm-svn: 130048 | 
| | 
| 
| 
| | llvm-svn: 130046 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | should
print out ldr, not ldr.n.
rdar://problem/9267772
llvm-svn: 130008 | 
| | 
| 
| 
| | llvm-svn: 129995 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | add <rd>, sp, #<imm8>
ldr <rd>, [sp, #<imm8>]
When the offset from sp is multiple of 4 and in range of 0-1020.
This saves code size by utilizing 16-bit instructions.
rdar://9321541
llvm-svn: 129971 | 
| | 
| 
| 
| | llvm-svn: 129952 | 
| | 
| 
| 
| | llvm-svn: 129947 | 
| | 
| 
| 
| | llvm-svn: 129922 | 
| | 
| 
| 
| | llvm-svn: 129884 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | On the x86-64 and thumb2 targets, some registers are more expensive to encode
than others in the same register class.
Add a CostPerUse field to the TableGen register description, and make it
available from TRI->getCostPerUse. This represents the cost of a REX prefix or a
32-bit instruction encoding required by choosing a high register.
Teach the greedy register allocator to prefer cheap registers for busy live
ranges (as indicated by spill weight).
llvm-svn: 129864 |