| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 163258
|
| |
|
|
|
|
|
|
| |
Previous patch accidentally decided it couldn't convert a VFP to a
NEON instruction after it had already destroyed the old one. Not a
good move.
llvm-svn: 163230
|
| |
|
|
| |
llvm-svn: 163187
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch corrects the definition of umlal/smlal instructions and adds support
for matching them to the ARM dag combiner.
Bug 12213
Patch by Yin Ma!
llvm-svn: 163136
|
| |
|
|
|
|
|
| |
the NumMCOperands argument to the GetMCInstOperandNum() function that is set
to the number of MCOperands this asm operand mapped to.
llvm-svn: 163124
|
| |
|
|
|
|
| |
MCTargetAsmParser class.
llvm-svn: 163122
|
| |
|
|
| |
llvm-svn: 163104
|
| |
|
|
|
|
|
|
|
|
| |
MatchInstructionImpl() function.
These values are used by the ConvertToMCInst() function to index into the
ConversionTable. The values are also needed to call the GetMCInstOperandNum()
function.
llvm-svn: 163101
|
| |
|
|
|
|
|
|
|
| |
For example, the ARM target does not have efficient ISel handling for vector
selects with scalar conditions. This patch adds a TLI hook which allows the
different targets to report which selects are supported well and which selects
should be converted to CF duting codegen prepare.
llvm-svn: 163093
|
| |
|
|
|
|
|
|
| |
NEON domain conversion was too heavy-handed with its widened
registers, which could have stripped existing instructions of their
dependency, leaving them vulnerable to scheduling errors.
llvm-svn: 163070
|
| |
|
|
| |
llvm-svn: 163063
|
| |
|
|
|
|
| |
function nowadays.
llvm-svn: 163030
|
| |
|
|
| |
llvm-svn: 163005
|
| |
|
|
|
|
| |
Match_ConversionFail enum.
llvm-svn: 163002
|
| |
|
|
|
|
|
|
|
| |
Thumb2 instructions are mostly constrained to rGPR, not tGPR which is
for Thumb1.
rdar://problem/12203728
llvm-svn: 162968
|
| |
|
|
|
|
|
| |
the ConvertToMCInst() return void, rather then a bool. Update all the cvt
functions as well.
llvm-svn: 162961
|
| |
|
|
| |
llvm-svn: 162955
|
| |
|
|
|
|
| |
belongs.
llvm-svn: 162954
|
| |
|
|
| |
llvm-svn: 162952
|
| |
|
|
| |
llvm-svn: 162898
|
| |
|
|
| |
llvm-svn: 162844
|
| |
|
|
| |
llvm-svn: 162825
|
| |
|
|
| |
llvm-svn: 162823
|
| |
|
|
|
|
|
|
| |
I have tested the fix, but have not been successfull in generating
a robust unit test. This can only be exposed through particular
register assignments.
llvm-svn: 162821
|
| |
|
|
| |
llvm-svn: 162820
|
| |
|
|
|
|
|
|
|
|
|
| |
ARM."
This wasn't the right way to enforce ordering of atomics.
We are already setting the isVolatile bit on memory operands of atomic
operations which is good enough to enforce the correct ordering.
llvm-svn: 162732
|
| |
|
|
|
|
|
|
|
|
|
| |
It is not safe to use normal LDR instructions because they may be
reordered by the scheduler. The ATOMIC_LDR pseudos have a mayStore flag
that prevents reordering.
Atomic loads are also prevented from participating in rematerialization
and load folding.
llvm-svn: 162713
|
| |
|
|
|
|
| |
<rdar://problem/12183003>
llvm-svn: 162703
|
| |
|
|
|
|
| |
Reviewed offline by chandlerc.
llvm-svn: 162623
|
| |
|
|
|
|
|
| |
ARMConstantIslandPass expects this instruction to stay in the same basic
block as the jump table branch.
llvm-svn: 162615
|
| |
|
|
|
|
|
|
|
|
| |
It's not clear that they should be marked as such, but tbb formation
fails if t2LEApcrelJT is hoisted of of a loop.
This doesn't change the flags on these instructions,
UnmodeledSideEffects was already inferred from the missing pattern.
llvm-svn: 162603
|
| |
|
|
|
|
|
|
|
| |
The ARM BL and BLX instructions don't have predicate operands, but the
thumb variants tBL and tBLX do.
The argument registers should be added as implicit uses.
llvm-svn: 162593
|
| |
|
|
| |
llvm-svn: 162557
|
| |
|
|
| |
llvm-svn: 162520
|
| |
|
|
| |
llvm-svn: 162362
|
| |
|
|
|
|
| |
did getFunction()->getName(). Remove includes of Function.h that are no longer needed.
llvm-svn: 162347
|
| |
|
|
|
|
|
|
|
|
| |
*** 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 test case ARM/2011-05-04-MultipleLandingPadSuccs.ll was creating
duplicate successor list entries.
llvm-svn: 162222
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
Make sure the generic pattern is used.
llvm-svn: 162170
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 162107
|
| |
|
|
| |
llvm-svn: 162094
|
| |
|
|
| |
llvm-svn: 162086
|
| |
|
|
|
|
|
|
|
|
| |
It is not my plan to duplicate the entire ARM instruction set with
predicated versions. We need a way of representing predicated
instructions in SSA form without requiring a separate opcode.
Then the pseudo-instructions can go away.
llvm-svn: 162061
|
| |
|
|
|
|
| |
Use the target independent select analysis hooks.
llvm-svn: 162060
|
| |
|
|
|
|
|
|
| |
Without fastcc support, the caller just falls through to CallingConv::C
for fastcc, but callee still uses fastcc, this inconsistency of calling
convention is a problem, and fastcc support can fix it.
llvm-svn: 162013
|