| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some targets, notably AArch64 for ILP32, have different relocation encodings
based upon the ABI. This is an enabling change, so a future patch can use the
ABIName from MCTargetOptions to chose which relocations to use. Tested using
check-llvm.
The corresponding change to clang is in: http://reviews.llvm.org/D16538
Patch by: Joel Jones
Differential Revision: https://reviews.llvm.org/D16213
llvm-svn: 276654
|
|
|
|
|
|
|
|
|
|
|
|
| |
...but most importantly, it cannot be used well with 'auto', because
the inferred type is StringSwitch rather than the result type. This
is a problem because StringSwitch stores addresses of temporary
values rather than copying or moving the value into its own storage.
Changing this uncovered the bug in PassBuilder, also in this patch.
Clang doesn't seem to have any occurrences of the issue.
llvm-svn: 276652
|
|
|
|
|
|
|
|
| |
It failed with assertion before this patch.
Differential Revision: https://reviews.llvm.org/D22735
llvm-svn: 276648
|
|
|
|
| |
llvm-svn: 276638
|
|
|
|
|
|
|
|
| |
Added thumb targets and dataflow checks to the longMAC test.
Differential Revision: https://reviews.llvm.org/D22684
llvm-svn: 276629
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Avoid MipsAnalyzeImmediate usage if the constant fits in an 32-bit
integer. This allows us to generate the same instructions for the
materialization of the same constants regardless the width of their
type.
Patch by: Vasileios Kalintiris
Contributions by: Simon Dardis
Reviewers: Daniel Sanders
Differential Review: https://reviews.llvm.org/D21689
llvm-svn: 276628
|
|
|
|
|
|
|
|
|
| |
Follow up to r276624. Changes bits 22-20 to be parameters to
instruction class.
Differential Revision: https://reviews.llvm.org/D22562
llvm-svn: 276626
|
|
|
|
|
|
|
|
| |
Use ISelDAGToDAG to recognise the SMMLS instruction pattern.
Differential Revision: https://reviews.llvm.org/D22562
llvm-svn: 276624
|
|
|
|
|
|
| |
instructions.
llvm-svn: 276615
|
|
|
|
|
|
| |
the first argument of an FMADD/FMSUB/FNMADD/FNMSUB/FMADDSUB/FMSUBADD node. Also add patterns to support all combinations of the broadcast input and the preserved input for masked versions.
llvm-svn: 276614
|
|
|
|
|
|
| |
to really be 213, 231, and 132.
llvm-svn: 276613
|
|
|
|
|
|
|
|
|
|
| |
Modify the variable names and code style to be that of modern LLVM.
Patch by River Riddle!
Differential Revision: https://reviews.llvm.org/D22743
llvm-svn: 276610
|
|
|
|
|
|
|
|
|
|
|
| |
The public InlineFunction utility assumes that the passed in
InlineFunctionInfo has a valid AssumptionCacheTracker.
Patch by River Riddle!
Differential Revision: https://reviews.llvm.org/D22706
llvm-svn: 276609
|
|
|
|
|
|
| |
Truncates can completely cancel out a zext or sext instruction.
llvm-svn: 276604
|
|
|
|
|
|
|
| |
We can combine metadata from multiple instructions intelligently for
certain metadata nodes.
llvm-svn: 276602
|
|
|
|
|
|
|
|
|
| |
If we two loads of two different alignments, we must use the minimum of
the two alignments when hoisting. Same deal for stores.
For allocas, use the maximum of the two allocas.
llvm-svn: 276601
|
|
|
|
|
|
| |
Use a range-based for loop, no functional change is intended.
llvm-svn: 276600
|
|
|
|
| |
llvm-svn: 276597
|
|
|
|
| |
llvm-svn: 276596
|
|
|
|
|
|
|
|
|
|
| |
Process::GetEnv does the right thing across our platforms.
CommandLine.cpp had, more or less, the same logic. Let's remove the
duplication.
No functional change is intended.
llvm-svn: 276572
|
|
|
|
|
|
| |
As with all AMD CPUs, excavator has poor SHLD/SHRD performance. Also added bdver3 to the test as it was missing.
llvm-svn: 276569
|
|
|
|
|
|
|
|
| |
encoded versions.
This places the 132/213/231 form number in front of the SS/SD/PS/PD. Move the Y for 256-bit versions to be after the PS/PD. Change the AVX512 scalar forms to include a Z in the their name. This new format should be consistent with the general naming of instructions.
llvm-svn: 276559
|
|
|
|
|
|
| |
the operand types exactly match the normal VPSRAVW/D/Q instructions.
llvm-svn: 276555
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allowed loop vectorization with secondary FP IVs. Like this:
float *A;
float x = init;
for (int i=0; i < N; ++i) {
A[i] = x;
x -= fp_inc;
}
The auto-vectorization is possible when the induction binary operator is "fast" or the function has "unsafe" attribute.
Differential Revision: https://reviews.llvm.org/D21330
llvm-svn: 276554
|
|
|
|
|
|
|
|
| |
checkClobberSanity will now be run for all results of `ClobberWalk`,
instead of just the crazy phi-optimized ones. This can help us catch
cases where our cache is being wonky.
llvm-svn: 276553
|
|
|
|
|
|
|
| |
liveOnEntry is always a MemoryDef; asserting that a MemoryPhi isn't
liveOnEntry, while correct, isn't very helpful. :)
llvm-svn: 276542
|
|
|
|
| |
llvm-svn: 276528
|
|
|
|
| |
llvm-svn: 276523
|
|
|
|
|
|
|
| |
should fix the build with GCC 4.9 at least. Not sure if this is the
right name or fix, but I've followed up on the original commit.
llvm-svn: 276522
|
|
|
|
| |
llvm-svn: 276521
|
|
|
|
|
|
| |
just to get the IsIntrisic flag, instead get it during the first call and pass it along. NFC
llvm-svn: 276520
|
|
|
|
| |
llvm-svn: 276519
|
|
|
|
|
|
| |
This has been dead since r269479
llvm-svn: 276518
|
|
|
|
|
|
|
|
| |
Patch by Jake VanAdrighem
Differential Revision: http://reviews.llvm.org/D22607
llvm-svn: 276516
|
|
|
|
|
|
|
|
|
|
| |
This unblocks the new PM part of River's patch in
https://reviews.llvm.org/D22706
Conveniently, this same change was needed for D21921 and so these
changes are just spun out from there.
llvm-svn: 276515
|
|
|
|
|
|
|
|
|
|
|
|
| |
While we handed loads past the end of an array, we didn't handle loads
_before_ the array.
This fixes PR28062.
N.B. While the bug in the code is obvious, I am struggling to craft a
test case which is reasonable in size.
llvm-svn: 276510
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change lets us prove things like
"{X,+,10} s< 5000" implies "{X+7,+,10} does not sign overflow"
It does this by replacing replacing getConstantDifference by
computeConstantDifference (which is smarter) in
isImpliedCondOperandsViaRanges.
llvm-svn: 276505
|
|
|
|
|
|
|
| |
This is in preparation of
s/getConstantDifference/computeConstantDifference/ in a later change.
llvm-svn: 276503
|
|
|
|
| |
llvm-svn: 276502
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r276298.
Data stored in .rodata can have a negative offset from .text, but we
don't support negative values in relocations yet.
This caused a regression in one of the amp conformance tests:
5_Data_Cont/5_2_a_v/5_2_3_m/Assignment/Test.02.01
llvm-svn: 276498
|
|
|
|
| |
llvm-svn: 276491
|
|
|
|
| |
llvm-svn: 276488
|
|
|
|
| |
llvm-svn: 276487
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch teaches FunctionInfo about offsets.
Like the last patch, this one doesn't introduce any visible
functionality change (the core algorithm knows nothing about offsets;
they're just plumbed through). Tests will come when we start acting
differently because of the offsets.
Patch by Jia Chen.
(N.B. I made a tiny change to Jia's patch to avoid warnings by GCC: I
put DenseMapInfo specializations in the `llvm` namespace. Only realized
that those appeared when compiling locally. :) )
Differential Revision: https://reviews.llvm.org/D22634
llvm-svn: 276486
|
|
|
|
| |
llvm-svn: 276481
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Clang inserts cleanup code before resume similar way as before return instruction.
This makes asan poison local variables causing false use-after-scope reports.
__asan_handle_no_return does not help here as it was executed before
llvm.lifetime.end inserted into resume block.
To avoid false report we need to unpoison stack for resume same way as for return.
PR27453
Reviewers: kcc, eugenis
Differential Revision: https://reviews.llvm.org/D22661
llvm-svn: 276480
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Adding a flag to diable GVN Hoisting by default.
Note: The GVN Hoist Pass causes some Halide tests to hang. Halide will disable the pass while investigating.
Reviewers: llvm-commits, chandlerc, spop, dberlin
Subscribers: mehdi_amini
Differential Revision: https://reviews.llvm.org/D22639
llvm-svn: 276479
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When vectorizing a tree rooted at a store bundle, we currently try to sort the
stores before building the tree, so that the stores can be vectorized. For other
trees, the order of the root bundle - which determines the order of all other
bundles - is arbitrary. That is bad, since if a leaf bundle of consecutive loads
happens to appear in the wrong order, we will not vectorize it.
This is partially mitigated when the root is a binary operator, by trying to
build a "reversed" tree when that's considered profitable. This patch extends the
workaround we have for binops to trees rooted in a horizontal reduction.
This fixes PR28474.
Differential Revision: https://reviews.llvm.org/D22554
llvm-svn: 276477
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D22700
llvm-svn: 276471
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds versions of operator + and - which are optimized for the LHS/RHS of the
operator being RValue's. When an RValue is available, we can use its storage space
instead of allocating new space.
On code such as ConstantRange which makes heavy use of APInt's over 64-bits in size,
this results in significant numbers of saved allocations.
Thanks to David Blaikie for all the review and most of the code here.
llvm-svn: 276470
|