| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
This is important for the correct lowering of unwind instructions
(which doesn't matter at all) and llvm.eh.resume calls (which does).
Take 2, now with more basic competence.
llvm-svn: 132295
|
| |
|
|
| |
llvm-svn: 132293
|
| |
|
|
|
|
|
| |
This is important for the correct lowering of unwind instructions
(which doesn't matter at all) and llvm.eh.resume calls (which does).
llvm-svn: 132291
|
| |
|
|
|
|
|
|
| |
to load/store i64 values. Since there's no current support to explicitly
declare such restrictions, implement it by using specific hardcoded register
pairs during isel.
llvm-svn: 132248
|
| |
|
|
|
|
| |
and add some basic tests for them.
llvm-svn: 132235
|
| |
|
|
|
|
| |
tools issues. rdar://9514789
llvm-svn: 132211
|
| |
|
|
|
|
| |
accepts parameters (ptr, size, value) in a different order than GNU's memset (ptr, value, size), therefore the special lowering in AAPCS mode. Implementation by Evzen Muller.
llvm-svn: 131868
|
| |
|
|
| |
llvm-svn: 131739
|
| |
|
|
| |
llvm-svn: 131708
|
| |
|
|
|
|
| |
this change.
llvm-svn: 131630
|
| |
|
|
|
|
| |
Add test case.
llvm-svn: 131582
|
| |
|
|
|
|
| |
rdar://9449159.
llvm-svn: 131555
|
| |
|
|
|
|
| |
type as input. Sorry test cases only trigger when dag combine is disabled. rdar://9449178
llvm-svn: 131553
|
| |
|
|
|
|
|
|
| |
splits each half. Therefore, the real problem was that we were using a VREV64 for a 4xi16, when we should have been using a VREV32.
Updated test case and reverted change to the PerfectShuffle Table.
llvm-svn: 131529
|
| |
|
|
| |
llvm-svn: 131519
|
| |
|
|
|
|
| |
compare-and-swap intrinsics.
llvm-svn: 131518
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
functionality change.
llvm-svn: 131012
|
| |
|
|
| |
llvm-svn: 130766
|
| |
|
|
|
|
|
|
| |
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: 130558
|
| |
|
|
|
|
| |
rdar://9326019
llvm-svn: 130234
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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: 129884
|
| |
|
|
| |
llvm-svn: 129862
|
| |
|
|
|
|
| |
<rdar://problem/7662569>
llvm-svn: 129858
|
| |
|
|
| |
llvm-svn: 129781
|
| |
|
|
|
|
| |
Luis Felipe Strano Moraes!
llvm-svn: 129558
|
| |
|
|
|
|
| |
forget to right shift the source by 32 first. rdar://9287902
llvm-svn: 129556
|
| |
|
|
| |
llvm-svn: 129468
|
| |
|
|
|
|
|
| |
stores of arguments in the same cache line. This fixes the second half of
<rdar://problem/8674845>.
llvm-svn: 129345
|
| |
|
|
|
|
| |
is lowered into a call to the specified trap function at sdisel time.
llvm-svn: 129152
|
| |
|
|
|
|
| |
instruction. rdar://9249183.
llvm-svn: 129107
|
| |
|
|
|
|
| |
vector type (vectors of size 3). Also included test cases.
llvm-svn: 129074
|
| |
|
|
| |
llvm-svn: 129045
|
| |
|
|
|
|
| |
imp-def of CPSR it was adding.
llvm-svn: 128965
|
| |
|
|
| |
llvm-svn: 128951
|
| |
|
|
| |
llvm-svn: 128946
|
| |
|
|
|
|
| |
doing the expansion earlier (using a custom inserter) to allow for the chance of predicating these instructions.
llvm-svn: 128940
|
| |
|
|
|
|
|
|
|
|
|
|
| |
It needed to be moved closer to the setjmp statement, because the code directly
after the setjmp needs to know about values that are on the stack. Also, the
'bitcast' of the function context was causing a dead load. This wouldn't be too
horrible, except that at -O0 it wasn't optimized out, and because it wasn't
using the correct base pointer (if there is a VLA), it would try to access a
value from a garbage address.
<rdar://problem/9130540>
llvm-svn: 128873
|
| |
|
|
|
|
|
|
| |
registers that arise from argument shuffling with the soft float ABI. These
instructions are particularly slow on Cortex A8. This fixes one half of
<rdar://problem/8674845>.
llvm-svn: 128759
|
| |
|
|
|
|
| |
rdar://8911343
llvm-svn: 128696
|
| |
|
|
|
|
|
|
|
|
|
| |
accumulator forwarding:
vadd d3, d0, d1
vmul d3, d3, d2
=>
vmul d3, d0, d2
vmla d3, d1, d2
llvm-svn: 128665
|
| |
|
|
| |
llvm-svn: 128586
|
| |
|
|
|
|
| |
can be recognized. This fixes <rdar://problem/9183078>.
llvm-svn: 128584
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
was lowering them to sext / uxt + mul instructions. Unfortunately the
optimization passes may hoist the extensions out of the loop and separate them.
When that happens, the long multiplication instructions can be broken into
several scalar instructions, causing significant performance issue.
Note the vmla and vmls intrinsics are not added back. Frontend will codegen them
as intrinsics vmull* + add / sub. Also note the isel optimizations for catching
mul + sext / zext are not changed either.
First part of rdar://8832507, rdar://9203134
llvm-svn: 128502
|
| |
|
|
|
|
| |
<rdar://problem/8875309> and <rdar://problem/9057191>.
llvm-svn: 128492
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
isel lowering to fold the zero-extend's and take advantage of no-stall
back to back vmul + vmla:
vmull q0, d4, d6
vmlal q0, d5, d6
is faster than
vaddl q0, d4, d5
vmovl q1, d6
vmul q0, q0, q1
This allows us to vmull + vmlal for:
f = vmull_u8( vget_high_u8(s), c);
f = vmlal_u8(f, vget_low_u8(s), c);
rdar://9197392
llvm-svn: 128444
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
masks to match inversely for the code as is to work. For the example given
we actually want:
bfi r0, r2, #1, #1
not #0, however, given the way the pattern is written it's not possible
at the moment.
Fixes rdar://9177502
llvm-svn: 128320
|
| |
|
|
|
|
| |
predecessors; update dominator tree if cfg is modified.
llvm-svn: 127981
|