| Commit message (Collapse) | Author | Age | Files | Lines | 
| ... |  | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
metadata is the loop vectorizer.
See the documentation update for more info.
llvm-svn: 175060
 | 
| | 
| 
| 
| 
| 
|  | 
via -print-after-all.
llvm-svn: 175058
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This happens when there is both stack realignment and a dynamic alloca in the
function. If we overwrite %esi (rep;movsl uses fixed registers) we'll lose the
base pointer and the next register spill will write into oblivion.
Fixes PR15249 and unbreaks firefox on i386/freebsd. Mozilla uses dynamic allocas
and freebsd a 4 byte stack alignment.
llvm-svn: 175057
 | 
| | 
| 
| 
|  | 
llvm-svn: 175048
 | 
| | 
| 
| 
|  | 
llvm-svn: 175046
 | 
| | 
| 
| 
|  | 
llvm-svn: 175044
 | 
| | 
| 
| 
| 
| 
|  | 
since a caller uses preserved registers across the call.
llvm-svn: 175043
 | 
| | 
| 
| 
| 
| 
|  | 
assembly.
llvm-svn: 175036
 | 
| | 
| 
| 
|  | 
llvm-svn: 175034
 | 
| | 
| 
| 
|  | 
llvm-svn: 175033
 | 
| | 
| 
| 
|  | 
llvm-svn: 175024
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
RegisterCoalescer used to depend on LiveDebugVariable. LDV removes DBG_VALUEs
without emitting them at the end.
We fix this by removing LDV from RegisterCoalescer. Also add an assertion to
make sure we call emitDebugValues if DBG_VALUEs are removed at
runOnMachineFunction.
rdar://problem/13183203
Reviewed by Andy & Jakob
llvm-svn: 175023
 | 
| | 
| 
| 
| 
| 
|  | 
rdar://13202662
llvm-svn: 175021
 | 
| | 
| 
| 
|  | 
llvm-svn: 175020
 | 
| | 
| 
| 
| 
| 
|  | 
visitSExt is an adapted copy of the related visitZExt method, so adapt the comment accordingly.
llvm-svn: 175019
 | 
| | 
| 
| 
|  | 
llvm-svn: 175017
 | 
| | 
| 
| 
| 
| 
|  | 
trying to do.
llvm-svn: 175014
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
.align).
Also, allow _EMIT and __EMIT for the emit directive.  We already do the same
for TYPE, SIZE, and LENGTH.
rdar://13200215
llvm-svn: 175008
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
violations such as tabs, blanks at eol and long 
lines.
 
llvm-svn: 175007
 | 
| | 
| 
| 
| 
| 
|  | 
function is called with a signed char argument, in order to avoid assertions in Windows Debug configuration.
llvm-svn: 175006
 | 
| | 
| 
| 
| 
| 
|  | 
avoid a second pred_iterator traversal.
llvm-svn: 175001
 | 
| | 
| 
| 
|  | 
llvm-svn: 174999
 | 
| | 
| 
| 
|  | 
llvm-svn: 174998
 | 
| | 
| 
| 
| 
| 
| 
|  | 
(through a loop), don't continue to iterate through the reamining
predecessors.
llvm-svn: 174994
 | 
| | 
| 
| 
| 
| 
|  | 
for tidiness' sake.
llvm-svn: 174988
 | 
| | 
| 
| 
|  | 
llvm-svn: 174985
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This is complicated by backward labels (e.g., 0b can be both a backward label
and a binary zero).  The current implementation assumes [0-9]b is always a
label and thus it's possible for 0b and 1b to not be interpreted correctly for
ms-style inline assembly.  However, this is relatively simple to fix in the
inline assembly (i.e., drop the [bB]).
This patch also limits backward labels to [0-9]b, so that only 0b and 1b are
ambiguous.
Part of rdar://12470373
llvm-svn: 174983
 | 
| | 
| 
| 
| 
| 
|  | 
option "generate-dwarf-pubnames" to control it, set to "false" by default.
llvm-svn: 174981
 | 
| | 
| 
| 
| 
| 
| 
|  | 
MI sched DAG construction allows targets to include terminators into scheduling DAG.
Extend this functionality to labels as well.
llvm-svn: 174977
 | 
| | 
| 
| 
|  | 
llvm-svn: 174976
 | 
| | 
| 
| 
| 
| 
|  | 
instructions.
llvm-svn: 174973
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
DAGCombiner::ReduceLoadWidth was converting (trunc i32 (shl i64 v, 32))
into (shl i32 v, 32) into undef. To prevent this, check the shift count
against the final result size.
Patch by: Kevin Schoedel
Reviewed by: Nadav Rotem
llvm-svn: 174972
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Vectors were being manually scalarized by the backend.  Instead,
let the target-independent code do all of the work.  The manual
scalarization was from a time before good target-independent support
for scalarization in LLVM. However, this forces us to specially-handle
vector loads and stores, which we can turn into PTX instructions that
produce/consume multiple operands.
llvm-svn: 174968
 | 
| | 
| 
| 
| 
| 
|  | 
may get mapped at 0x100000000+ and thus may interleave with the shadow.
llvm-svn: 174964
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
'R600/SI: Use proper instructions for array/shadow samplers.' removed two
cases from TEX_SHADOW. Vincent Lejeune reported on IRC that this broke some
shadow array piglit tests with the r600g driver. Reinstating the removed
cases should fix this, and still works with radeonsi as well.
I will follow up with some lit tests which would have caught the regression.
NOTE: This is a candidate for the Mesa stable branch.
Tested-by: Vincent Lejeune <vljn@ovi.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 174963
 | 
| | 
| 
| 
| 
| 
|  | 
roughly 5% speedup. Since this is an ABI change, bump the asan ABI version by renaming __asan_init to __asan_init_v1. llvm part, compiler-rt part will follow
llvm-svn: 174957
 | 
| | 
| 
| 
|  | 
llvm-svn: 174955
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
The bitcode writer emits a reference to the attribute group that the object at
the given index refers to. The bitcode reader is modified to read this in and
map it back to the attribute group.
llvm-svn: 174952
 | 
| | 
| 
| 
|  | 
llvm-svn: 174950
 | 
| | 
| 
| 
|  | 
llvm-svn: 174948
 | 
| | 
| 
| 
| 
| 
|  | 
live range after inserting a copy at the end of a block.
llvm-svn: 174945
 | 
| | 
| 
| 
|  | 
llvm-svn: 174944
 | 
| | 
| 
| 
| 
| 
| 
|  | 
particularly useful for catching issues with architectures that have exotic
terminators like MIPS.
llvm-svn: 174938
 | 
| | 
| 
| 
| 
| 
|  | 
a critical edge.
llvm-svn: 174936
 | 
| | 
| 
| 
| 
| 
| 
|  | 
live ranges should always be extended, and the only successor that should be
considered for extension of other ranges is the target of the split edge.
llvm-svn: 174935
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Sorry for the lack of a test case.  I tried writing one for i386 as i know selects are illegal on this target, but they are actually considered legal by isel and expanded later.
I can't see any targets to trigger this, but checking for the legality of a node before forming it is general goodness.
llvm-svn: 174934
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
A reverse shuffle is lowered to a vrev and possibly a vext instruction (quad
word).
radar://13171406
llvm-svn: 174933
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Check for reverse shuffles in the CostModel analysis pass and query
TargetTransform info accordingly. This allows us we can write test cases for
reverse shuffles.
radar://13171406
llvm-svn: 174932
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Lower reverse shuffles to a vrev64 and a vext instruction instead of the default
legalization of storing and loading to the stack. This is important because we
generate reverse shuffles in the loop vectorizer when we reverse store to an
array.
  uint8_t Arr[N];
  for (i = 0; i < N; ++i)
    Arr[N - i - 1] = ...
radar://13171760
llvm-svn: 174929
 | 
| | 
| 
| 
|  | 
llvm-svn: 174927
 |