| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
Carlo Alberto Ferraris.
llvm-svn: 157736
|
| |
|
|
| |
llvm-svn: 157731
|
| |
|
|
|
|
|
|
|
| |
CPU16RegsRegClass and CPURARegRegClass available. Add definition of mips16
jalr instruction.
Patch by Reed Kotler.
llvm-svn: 157730
|
| |
|
|
| |
llvm-svn: 157726
|
| |
|
|
|
|
| |
This code is covered by test/CodeGen/ARM/arm-modifier.ll.
llvm-svn: 157720
|
| |
|
|
|
|
| |
Switch to MCSuperRegIterator while we're there.
llvm-svn: 157717
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
It helps compile exotic inline asm. In the test case, normal GR32
virtual registers use up eax-edx so the final GR32_ABCD live range has
no registers left. Since all the live ranges were tiny, we had no way of
prioritizing the smaller register class.
This patch allows tiny unspillable live ranges to be evicted by tiny
unspillable live ranges from a smaller register class.
<rdar://problem/11542429>
llvm-svn: 157715
|
| |
|
|
|
|
| |
Patch by Jack Carter.
llvm-svn: 157709
|
| |
|
|
|
|
| |
wrote and the usual LLVM convention.
llvm-svn: 157708
|
| |
|
|
|
|
| |
operands of an FMA node.
llvm-svn: 157707
|
| |
|
|
| |
llvm-svn: 157706
|
| |
|
|
| |
llvm-svn: 157704
|
| |
|
|
|
|
|
| |
It is better to address sub-registers directly by name instead of
relying on their position in the sub-register list.
llvm-svn: 157703
|
| |
|
|
|
|
|
| |
An empty list is not represented as a null pointer. Let TRI do its own
shortcuts.
llvm-svn: 157702
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This also required making recursive simplifications until
nothing changes or a hard limit (currently 3) is hit.
With the simplification in place indvars can canonicalize
loops of the form
for (unsigned i = 0; i < a-b; ++i)
into
for (unsigned i = 0; i != a-b; ++i)
which used to fail because SCEV created a weird umax expr
for the backedge taken count.
llvm-svn: 157701
|
| |
|
|
|
|
| |
just for 64-bit registers is silly. Just optimize 3 more.
llvm-svn: 157699
|
| |
|
|
|
|
|
|
|
|
|
|
| |
two values in
integer registers. This is already supported by the fastcc convention, but it doesn't
hurt to support it in the standard conventions as well.
In cases where we can cheat at the calling convention, this allows us to avoid returning
things through memory in more cases.
llvm-svn: 157698
|
| |
|
|
|
|
| |
Patch by Jush Lu <jush.msn@gmail.com>.
llvm-svn: 157696
|
| |
|
|
| |
llvm-svn: 157685
|
| |
|
|
| |
llvm-svn: 157683
|
| |
|
|
|
|
|
|
|
| |
If integer overflow causes one of the terms to reach zero, that can
force the entire expression to zero.
Fixes PR12929: cast<Ty>() argument of incompatible type
llvm-svn: 157673
|
| |
|
|
|
|
| |
No functionality.
llvm-svn: 157672
|
| |
|
|
| |
llvm-svn: 157663
|
| |
|
|
|
|
| |
marked as 'undef' since it may not already be live. This appeases -verify-machineinstrs.
llvm-svn: 157662
|
| |
|
|
|
|
|
|
|
|
| |
Besides adding the new insertPass function, this patch uses it to
enhance the existing -print-machineinstrs so that the MachineInstrs
after a specific pass can be printed.
Patch by Bin Zeng!
llvm-svn: 157655
|
| |
|
|
|
|
|
| |
- hoist checks out of loops where SCEV is smart enough
- add additional statistics to measure how much we loose for not supporting interprocedural and pointers loaded from memory
llvm-svn: 157649
|
| |
|
|
| |
llvm-svn: 157640
|
| |
|
|
|
|
|
|
|
|
|
| |
extrq and insertq instructions.
This required light surgery on the assembler and disassembler
because the instructions use an uncommon encoding. They are
the only two instructions in x86 that use register operands
and two immediates.
llvm-svn: 157634
|
| |
|
|
|
|
|
|
|
|
| |
ranges for the instruction about to be bundled. This fixes a bug in an external
project where an assertion was triggered due to spurious 'multiple defs' within
the bundle.
Patch by Ivan Llopard. Thanks Ivan!
llvm-svn: 157632
|
| |
|
|
| |
llvm-svn: 157624
|
| |
|
|
|
|
| |
IntegersSubsetMapping.
llvm-svn: 157612
|
| |
|
|
| |
llvm-svn: 157594
|
| |
|
|
| |
llvm-svn: 157592
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The test case feeds the following into InstCombine's visitSelect:
%tobool8 = icmp ne i32 0, 0
%phitmp = select i1 %tobool8, i32 3, i32 0
Then instcombine replaces the right side of the switch with 0, doesn't notice
that nothing changes and tries again indefinitely.
This fixes PR12897.
llvm-svn: 157587
|
| |
|
|
| |
llvm-svn: 157586
|
| |
|
|
|
|
|
|
|
| |
Attribute bits above 1<<30 are now encoded correctly. Additionally,
the encoding/decoding functionality has been hoisted to helper functions
in Attributes.h in an effort to help the encoding/decoding to stay in
sync with the Attribute bitcode definitions.
llvm-svn: 157581
|
| |
|
|
| |
llvm-svn: 157577
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implemented IntItem - the wrapper around APInt. Why not to use APInt item directly right now?
1. It will very difficult to implement case ranges as series of small patches. We got several large and heavy patches. Each patch will about 90-120 kb. If you replace ConstantInt with APInt in SwitchInst you will need to changes at the same time all Readers,Writers and absolutely all passes that uses SwitchInst.
2. We can implement APInt pool inside and save memory space. E.g. we use several switches that works with 256 bit items (switch on signatures, or strings). We can avoid value duplicates in this case.
3. IntItem can be easyly easily replaced with APInt.
4. Currenly we can interpret IntItem both as ConstantInt and as APInt. It allows to provide SwitchInst methods that works with ConstantInt for non-updated passes.
Why I need it right now? Currently I need to update SimplifyCFG pass (EqualityComparisons). I need to work with APInts directly a lot, so peaces of code
ConstantInt *V = ...;
if (V->getValue().ugt(AnotherV->getValue()) {
...
}
will look awful. Much more better this way:
IntItem V = ConstantIntVal->getValue();
if (AnotherV < V) {
}
Of course any reviews are welcome.
P.S.: I'm also going to rename ConstantRangesSet to IntegersSubset, and CRSBuilder to IntegersSubsetMapping (allows to map individual subsets of integers to the BasicBlocks).
Since in future these classes will founded on APInt, it will possible to use them in more generic ways.
llvm-svn: 157576
|
| |
|
|
|
|
|
|
| |
replicating the code for every place it's needed, we instead generate a function
that does that for us. This function is local to the executable, so there
shouldn't be any writing violations.
llvm-svn: 157564
|
| |
|
|
| |
llvm-svn: 157556
|
| |
|
|
| |
llvm-svn: 157555
|
| |
|
|
|
|
| |
type's size.
llvm-svn: 157548
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Intrinsic::getDefinition,
making it stronger and more sane.
Delete the code from tblgen that produced the old code.
Besides being a path forward in intrinsic sanity, this also eliminates a bunch of
machine generated code that was compiled into Function.o
llvm-svn: 157545
|
| |
|
|
|
|
|
|
|
| |
definition in the map before calling itself to retrieve the
DIE for the declaration. Without this change, if this causes
getOrCreateSubprogramDIE to be recursively called on the definition,
it will create multiple DIEs for that definition. Fixes PR12831.
llvm-svn: 157541
|
| |
|
|
|
|
| |
info table.
llvm-svn: 157540
|
| |
|
|
|
|
|
| |
it is (at the cost of 45 bytes of extra table space) so that the verifier can
start using it.
llvm-svn: 157536
|
| |
|
|
|
|
| |
to check when someone would remove the tempdir.
llvm-svn: 157529
|
| |
|
|
| |
llvm-svn: 157527
|
| |
|
|
|
|
|
| |
This is obviosly right but I don't see how to do this with proper vector
iterators without building a horrible mess of workarounds.
llvm-svn: 157526
|
| |
|
|
|
|
| |
vector.begin()-1 is invalid too.
llvm-svn: 157525
|