| Commit message (Collapse) | Author | Age | Files | Lines | 
| ... |  | 
| | 
| 
| 
| 
| 
|  | 
to the original type.
llvm-svn: 154764
 | 
| | 
| 
| 
|  | 
llvm-svn: 154761
 | 
| | 
| 
| 
| 
| 
|  | 
-Asserts.
llvm-svn: 154759
 | 
| | 
| 
| 
|  | 
llvm-svn: 154758
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
thinking of generalizing it to be able to specify other freedoms beyond accuracy
(such as that NaN's don't have to be respected).  I'd like the 3.1 release (the
first one with this metadata) to have the more generic name already rather than
having to auto-upgrade it in 3.2.
llvm-svn: 154744
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
When vectorizing pointer types it is important to realize that potential
pairs cannot be connected via the address pointer argument of a load or store.
This is because even after vectorization, the address is still a scalar because
the address of the higher half of the pair is implicit from the address of the
lower half (it need not be, and should not be, explicitly computed).
llvm-svn: 154735
 | 
| | 
| 
| 
|  | 
llvm-svn: 154734
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
This is a special flag for targets that really want their block
terminators in the DAG. The default scheduler cannot handle this
correctly, so it becomes the specialized scheduler's responsibility to
schedule terminators.
llvm-svn: 154712
 | 
| | 
| 
| 
| 
| 
|  | 
~*x & y.
llvm-svn: 154705
 | 
| | 
| 
| 
|  | 
llvm-svn: 154703
 | 
| | 
| 
| 
|  | 
llvm-svn: 154700
 | 
| | 
| 
| 
|  | 
llvm-svn: 154696
 | 
| | 
| 
| 
| 
| 
|  | 
possible.
llvm-svn: 154695
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
- Don't copy offsets into HashData, the underlying vector won't change once the table is finalized.
- Allocate HashData and HashDataContents in a BumpPtrAllocator.
- Allocate string map entries in the same allocator.
- Random cleanups.
llvm-svn: 154694
 | 
| | 
| 
| 
| 
| 
|  | 
explicitly.
llvm-svn: 154689
 | 
| | 
| 
| 
|  | 
llvm-svn: 154687
 | 
| | 
| 
| 
| 
| 
| 
|  | 
targets so if the branch target has the high bit set it does not get printed as:
	 beq     0xffffffff8008c404
llvm-svn: 154685
 | 
| | 
| 
| 
| 
| 
| 
|  | 
their argument as "escape" points for objc_retainBlock optimization.
This fixes rdar://11229925.
llvm-svn: 154682
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
As has been suggested by Duncan and others, Early-CSE and GVN should
do similar redundancy elimination, but Early-CSE is much less expensive.
Most of my autovectorization benchmarks show a performance regresion, but
all of these are < 0.1%, and so I think that it is still worth using
the less expensive pass.
llvm-svn: 154673
 | 
| | 
| 
| 
|  | 
llvm-svn: 154661
 | 
| | 
| 
| 
| 
| 
|  | 
builds. Mostly converting 'assert(0)' to 'llvm_unreachable' to silence warnings about missing returns. Also fold some variable declarations into asserts to prevent the variables from being unused in release builds.
llvm-svn: 154660
 | 
| | 
| 
| 
| 
| 
| 
|  | 
library return value optimization for phi uses. Even when the
phi itself is not dominated, the specific use may be dominated.
llvm-svn: 154647
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
obviously cannot know that this code is present, let alone used. So prevent the
internalize pass from internalizing those global values which code-gen may
insert.
llvm-svn: 154645
 | 
| | 
| 
| 
| 
| 
| 
|  | 
optimizing autorelease calls on phi nodes with null operands.
This fixes rdar://11207070.
llvm-svn: 154642
 | 
| | 
| 
| 
| 
| 
|  | 
as Eli noticed.
llvm-svn: 154641
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
directly instead of a user Instruction. This allows them to test
whether a def dominates a particular operand if the user instruction
is a PHI.
llvm-svn: 154631
 | 
| | 
| 
| 
| 
| 
|  | 
symbolic operands added when using the C disassembler API.
llvm-svn: 154628
 | 
| | 
| 
| 
|  | 
llvm-svn: 154622
 | 
| | 
| 
| 
|  | 
llvm-svn: 154620
 | 
| | 
| 
| 
|  | 
llvm-svn: 154616
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
of zero-initialized sections, virtual sections and common symbols
and preventing the loading of sections which are not required for
execution such as debug information.
Patch by Andy Kaylor!
llvm-svn: 154610
 | 
| | 
| 
| 
| 
| 
|  | 
and fix the tests. rdar://11069732, rdar://11236106
llvm-svn: 154604
 | 
| | 
| 
| 
|  | 
llvm-svn: 154597
 | 
| | 
| 
| 
|  | 
llvm-svn: 154588
 | 
| | 
| 
| 
| 
| 
|  | 
integer instructions.
llvm-svn: 154580
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
They reference the PC directly, so things work properly that way.
rdar://11231229
llvm-svn: 154576
 | 
| | 
| 
| 
| 
| 
|  | 
otherwise expand FNEG during legalization.
llvm-svn: 154546
 | 
| | 
| 
| 
| 
| 
|  | 
Invalid operation is signaled if the operand of these instructions is NaN.
llvm-svn: 154545
 | 
| | 
| 
| 
| 
| 
|  | 
of a VST instruction.
llvm-svn: 154544
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
- FCOPYSIGN nodes that have operands of different types were not handled.
- Different code was generated depending on the endianness of the target.
Additionally, code is added that emits INS and EXT instructions, if they are
supported by target (they are R2 instructions).
llvm-svn: 154540
 | 
| | 
| 
| 
|  | 
llvm-svn: 154522
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
While there is an encoding for it in VUZP, the result of that is undefined,
so we should avoid it. Define the instruction as a pseudo for VTRN.32
instead, as the ARM ARM indicates.
rdar://11222366
llvm-svn: 154511
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
While there is an encoding for it in VZIP, the result of that is undefined,
so we should avoid it. Define the instruction as a pseudo for VTRN.32
instead, as the ARM ARM indicates.
rdar://11221911
llvm-svn: 154505
 | 
| | 
| 
| 
| 
| 
|  | 
Thanks to Pino Toscano for the patch
llvm-svn: 154500
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
FoldingSet is implemented as a chained hash table. When there is a hash
collision during insertion, which is common as we fill the table until a
load factor of 2.0 is hit, we walk the chained elements, comparing every
operand with the new element's operands. This can be very expensive if the
MDNode has many operands.
We sacrifice a word of space in MDNode to cache the full hash value, reducing
compares on collision to a minimum. MDNode grows from 28 to 32 bytes + operands
on x86. On x86_64 the new bits fit nicely into existing padding, not growing
the struct at all.
The actual speedup depends a lot on the test case and is typically between
1% and 2% for C++ code with clang -c -O0 -g.
llvm-svn: 154497
 | 
| | 
| 
| 
| 
| 
|  | 
use it.
llvm-svn: 154496
 | 
| | 
| 
| 
| 
| 
|  | 
FoldingSetNodeID.
llvm-svn: 154495
 | 
| | 
| 
| 
|  | 
llvm-svn: 154494
 | 
| | 
| 
| 
| 
| 
| 
|  | 
binary and assembly. Patch by Carlo Kok.  Emitting was inspired by but not based
on the D llvm bindings. 
llvm-svn: 154493
 | 
| | 
| 
| 
| 
| 
|  | 
Yea, 'NumCallerCallersAnalyzed' isn't a great name, suggestions welcome.
llvm-svn: 154492
 |