| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
Fixes rdar://9761830
llvm-svn: 135123
|
|
|
|
| |
llvm-svn: 135122
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Each InterferenceCache::Cursor instance references a cache entry. A
non-zero reference count guarantees that the entry won't be reused for a
new register.
This makes it possible to have multiple live cursors examining
interference for different physregs.
The total number of live cursors into a cache must be kept below
InterferenceCache::getMaxCursors().
Code generation should be unaffected by this change, and it doesn't seem
to affect the cache replacement strategy either.
llvm-svn: 135121
|
|
|
|
|
|
| |
32-bit, it doesn't matter whether the operation overflows because the computed address is not wider than the immediate.
llvm-svn: 135120
|
|
|
|
| |
llvm-svn: 135118
|
|
|
|
|
|
| |
Add instalias for default 'sy' option. Add tests.
llvm-svn: 135116
|
|
|
|
|
|
|
|
|
|
| |
The cache entry referenced by the best split candidate could become
clobbered by an unsuccessful candidate.
The correct fix here is to use reference counts on the cache entries.
Coming up.
llvm-svn: 135113
|
|
|
|
| |
llvm-svn: 135112
|
|
|
|
| |
llvm-svn: 135111
|
|
|
|
| |
llvm-svn: 135110
|
|
|
|
|
|
|
|
| |
Flesh out the options supported for the instruction. Shuffle tests a bit and
add entries for the rest of the options. Add an alias to handle the default
operand of "sy".
llvm-svn: 135109
|
|
|
|
| |
llvm-svn: 135107
|
|
|
|
|
|
| |
an opcode. Switch ARM over to using that rather than its own special MCInstrDesc bits.
llvm-svn: 135106
|
|
|
|
|
|
|
| |
The frameless unwind stack has a special encoding, the algorithm for which is in
"permuteEncode".
llvm-svn: 135103
|
|
|
|
|
|
| |
Add range checking and testing for parsing and encoding of DBG instruction.
llvm-svn: 135102
|
|
|
|
| |
llvm-svn: 135096
|
|
|
|
| |
llvm-svn: 135094
|
|
|
|
| |
llvm-svn: 135093
|
|
|
|
| |
llvm-svn: 135092
|
|
|
|
|
|
|
| |
general version of X86ISD::ANDNP also opened the room for a little bit
of refactoring.
llvm-svn: 135088
|
|
|
|
|
|
|
| |
it's later selected to a ANDNPD/ANDNPS instruction instead of the PANDN
instruction. Rename it.
llvm-svn: 135087
|
|
|
|
|
|
| |
Combine redundant base classes and such. No indended functional change.
llvm-svn: 135085
|
|
|
|
|
|
|
|
| |
same addressing mode on x86-64. It can overflow, leading to a crash/miscompile.
<rdar://problem/9763308>
llvm-svn: 135084
|
|
|
|
| |
llvm-svn: 135082
|
|
|
|
|
|
|
| |
They're all Thumb2 only, not just some of them. More refactoring cleanup
coming.
llvm-svn: 135081
|
|
|
|
|
|
|
|
|
| |
Some pysical registers create split solutions that would spill anywhere.
They should not even be considered in future multi-way global splits.
This does not affect code generation (yet).
llvm-svn: 135080
|
|
|
|
|
|
|
|
| |
functionality change. Refactoring in preparation for an additional safety check in FoldOffsetIntoAddress.
Part of <rdar://problem/9763308>.
llvm-svn: 135079
|
|
|
|
| |
llvm-svn: 135077
|
|
|
|
| |
llvm-svn: 135076
|
|
|
|
|
|
|
| |
This is in preparation of supporting multiple global split candidates in
a single live range split operation.
llvm-svn: 135074
|
|
|
|
| |
llvm-svn: 135071
|
|
|
|
|
|
| |
a complete misunderstanding of the code.
llvm-svn: 135070
|
|
|
|
| |
llvm-svn: 135068
|
|
|
|
|
|
| |
The immediate is of limited range and the operand type should reflect that.
llvm-svn: 135066
|
|
|
|
| |
llvm-svn: 135063
|
|
|
|
|
|
| |
another use of sqrt. rdar://9763193
llvm-svn: 135058
|
|
|
|
|
|
|
|
|
| |
Catch potential cascading errors on a malformed so_reg operand and bail after
the first error.
Add some tests for the diagnostics we do want.
llvm-svn: 135055
|
|
|
|
| |
llvm-svn: 135052
|
|
|
|
|
|
|
| |
Now works for parsing register shifted register and register shifted
immediate arithmetic instructions, including the 'rrx' rotate with extend.
llvm-svn: 135049
|
|
|
|
| |
llvm-svn: 135047
|
|
|
|
|
|
|
|
|
|
|
| |
Update the debug output interface for MCParsedAsmOperand to have a print()
method which takes an output stream argument, an << operator which invokes
the print method using the given stream, and a dump() method which prints
the operand to the dbgs() stream. This makes the interface more consistent
with the rest of LLVM, and more convenient to use at the debugger command
line.
llvm-svn: 135043
|
|
|
|
| |
llvm-svn: 135042
|
|
|
|
| |
llvm-svn: 135040
|
|
|
|
| |
llvm-svn: 135037
|
|
|
|
|
|
| |
to Benjamin Kramer for steering me in the right direction here.
llvm-svn: 135031
|
|
|
|
| |
llvm-svn: 135024
|
|
|
|
|
|
| |
vxorps, vxorpd
llvm-svn: 135023
|
|
|
|
|
|
| |
not the FDE
llvm-svn: 135020
|
|
|
|
|
|
| |
looking at.
llvm-svn: 135018
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
if (x != 0) x = 1
if (x == 1) x = 1
Previous codegen looks like this:
mov r1, r0
cmp r1, #1
mov r0, #0
moveq r0, #1
The naive lowering select between two different values. It should recognize the
test is equality test so it's more a conditional move rather than a select:
cmp r0, #1
movne r0, #0
rdar://9758317
llvm-svn: 135017
|