| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 162282
|
| |
|
|
| |
llvm-svn: 162281
|
| |
|
|
|
|
|
|
|
| |
The MCJIT doesn't need or want a TargetJITInfo. That's vestigal from the old
JIT, so just remove it.
rdar://12119347
llvm-svn: 162280
|
| |
|
|
|
|
|
|
|
|
| |
This optimization is really just replacing allocas wholesale with
globals, there is no scalarization.
The underlying motivation for this patch is to simplify the SROA pass
and focus it on splitting and promoting allocas.
llvm-svn: 162271
|
| |
|
|
| |
llvm-svn: 162270
|
| |
|
|
|
|
| |
sub-pass is off by default for now. Patch by Reid Watson. Note: this patch changes the interface between LLVM and compiler-rt parts of asan. The corresponding patch to compiler-rt will follow.
llvm-svn: 162268
|
| |
|
|
| |
llvm-svn: 162267
|
| |
|
|
| |
llvm-svn: 162264
|
| |
|
|
| |
llvm-svn: 162263
|
| |
|
|
|
|
| |
switch. Condense code a bit. No functional change.
llvm-svn: 162261
|
| |
|
|
|
|
| |
forms.
llvm-svn: 162260
|
| |
|
|
|
|
| |
null_frag.
llvm-svn: 162257
|
| |
|
|
| |
llvm-svn: 162256
|
| |
|
|
|
|
|
|
|
|
| |
*** Bad machine code: Explicit definition marked as use ***
- function: test_cos
- basic block: BB#0 L.entry (0x7ff2a2024fd0)
- instruction: VSETLNi32 %D11, %D11<undef>, %R0, 0, pred:14, pred:%noreg, %Q5<imp-use,kill>, %Q5<imp-def>
- operand 0: %D11
llvm-svn: 162247
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The getSumForBlock function was quadratic in the number of successors
because getSuccWeight would perform a linear search for an already known
iterator.
This patch was originally committed as r161460, but reverted again
because of assertion failures. Now that duplicate Machine CFG edges have
been eliminated, this works properly.
llvm-svn: 162233
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
IR that hasn't been through SimplifyCFG can look like this:
br i1 %b, label %r, label %r
Make sure we don't create duplicate Machine CFG edges in this case.
Fix the machine code verifier to accept conditional branches with a
single CFG edge.
llvm-svn: 162230
|
| |
|
|
|
|
|
| |
This pass often has weird CFG hacks and hand-written MI building code
that can go wrong in many ways.
llvm-svn: 162224
|
| |
|
|
|
|
|
| |
Verify that the predecessor and successor lists are consistent and free
of duplicates.
llvm-svn: 162223
|
| |
|
|
|
|
|
| |
The test case ARM/2011-05-04-MultipleLandingPadSuccs.ll was creating
duplicate successor list entries.
llvm-svn: 162222
|
| |
|
|
| |
llvm-svn: 162217
|
| |
|
|
| |
llvm-svn: 162214
|
| |
|
|
|
|
| |
Patch by Petar Jovanovic.
llvm-svn: 162213
|
| |
|
|
| |
llvm-svn: 162201
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The DAGCombiner tries to optimise a BUILD_VECTOR by checking if it
consists purely of get_vector_elts from one or two source vectors. If
so, it either makes a concat_vectors node or a shufflevector node.
However, it doesn't check the element type width of the underlying
vector, so if you have this sequence:
Node0: v4i16 = ...
Node1: i32 = extract_vector_elt Node0
Node2: i32 = extract_vector_elt Node0
Node3: v16i8 = BUILD_VECTOR Node1, Node2, ...
It will attempt to:
Node0: v4i16 = ...
NewNode1: v16i8 = concat_vectors Node0, ...
Where this is actually invalid because the element width is completely
different. This causes an assertion failure on DAG legalization stage.
Fix:
If output item type of BUILD_VECTOR differs from input item type.
Make concat_vectors based on input element type and then bitcast it to the output vector type. So the case described above will transformed to:
Node0: v4i16 = ...
NewNode1: v8i16 = concat_vectors Node0, ...
NewNode2: v16i8 = bitcast NewNode1
llvm-svn: 162195
|
| |
|
|
| |
llvm-svn: 162194
|
| |
|
|
| |
llvm-svn: 162193
|
| |
|
|
| |
llvm-svn: 162192
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
this allows for better code generation.
Added a new DAGCombine transformation to convert FMAX and FMIN to FMANC and
FMINC, which are commutative.
For example:
movaps %xmm0, %xmm1
movsd LC(%rip), %xmm0
minsd %xmm1, %xmm0
becomes:
minsd LC(%rip), %xmm0
llvm-svn: 162187
|
| |
|
|
| |
llvm-svn: 162186
|
| |
|
|
| |
llvm-svn: 162180
|
| |
|
|
|
|
|
| |
These nodes are no longer needed because the peephole pass can fold
CMOV+AND into ANDCC etc.
llvm-svn: 162179
|
| |
|
|
|
|
| |
class, but the base class methods aren't virtual so it just increased call overhead.
llvm-svn: 162178
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This turns common i1 patterns into predicated instructions:
(add (zext cc), x) -> (select cc (add x, 1), x)
(add (sext cc), x) -> (select cc (add x, -1), x)
For a function like:
unsigned f(unsigned s, int x) {
return s + (x>0);
}
We now produce:
cmp r1, #0
it gt
addgt.w r0, r0, #1
Instead of:
movs r2, #0
cmp r1, #0
it gt
movgt r2, #1
add r0, r2
llvm-svn: 162177
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add these transformations to the existing add/sub ones:
(and (select cc, -1, c), x) -> (select cc, x, (and, x, c))
(or (select cc, 0, c), x) -> (select cc, x, (or, x, c))
(xor (select cc, 0, c), x) -> (select cc, x, (xor, x, c))
The selects can then be transformed to a single predicated instruction
by peephole.
This transformation will make it possible to eliminate the ISD::CAND,
COR, and CXOR custom DAG nodes.
llvm-svn: 162176
|
| |
|
|
|
|
| |
single IR instruction.
llvm-svn: 162175
|
| |
|
|
| |
llvm-svn: 162174
|
| |
|
|
|
|
| |
to shrink from double to float.
llvm-svn: 162173
|
| |
|
|
|
|
| |
better compare/branch code.
llvm-svn: 162172
|
| |
|
|
|
|
| |
Make sure the generic pattern is used.
llvm-svn: 162170
|
| |
|
|
|
|
| |
functional change intended.
llvm-svn: 162166
|
| |
|
|
| |
llvm-svn: 162165
|
| |
|
|
| |
llvm-svn: 162164
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
arithmetic instructions. However, when small data types are used, a truncate
node appears between the SETCC node and the arithmetic operation. This patch
adds support for this pattern.
Before:
xorl %esi, %edi
testb %dil, %dil
setne %al
ret
After:
xorb %dil, %sil
setne %al
ret
rdar://12081007
llvm-svn: 162160
|
| |
|
|
|
|
|
|
|
| |
operations
so other unexpected operations don't slip through. Based on patch by Logan Chien.
PR11786/PR13186.
llvm-svn: 162146
|
| |
|
|
|
|
| |
SSAUpdater was created and destroyed without being initialized.
llvm-svn: 162137
|
| |
|
|
| |
llvm-svn: 162136
|
| |
|
|
|
|
|
|
|
|
| |
No new tests are added.
All tests in ExecutionEngine/MCJIT that have been failing pass after this patch
is applied (when "make check" is done on a mips board).
Patch by Petar Jovanovic.
llvm-svn: 162135
|
| |
|
|
|
|
| |
<rdar://problem/10545247>
llvm-svn: 162131
|
| |
|
|
|
|
|
|
|
| |
PEI can't handle the pseudo-instructions. This can be removed when the
pseudo-instructions are replaced by normal predicated instructions.
Fixes PR13628.
llvm-svn: 162130
|
| |
|
|
|
|
| |
Patch by Vladimir Medic.
llvm-svn: 162124
|