| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
NFCI
llvm-svn: 300751
|
| |
|
|
| |
llvm-svn: 300750
|
| |
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D32103
llvm-svn: 300749
|
| |
|
|
| |
llvm-svn: 300747
|
| |
|
|
|
|
|
|
|
|
| |
Use haveNoCommonBitsSet to figure out whether an "or" instruction
is equivalent to addition. This handles more cases than just
checking for a constant on the RHS.
Differential Revision: https://reviews.llvm.org/D32239
llvm-svn: 300746
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
In the current implementation, to find inline stack for an address incurs expensive linear search in 2 places:
* linear search for the top-level DIE
* recursive linear traverse the DIE tree to find the path to the leaf DIE
In this patch, a map is built from address to its corresponding leaf DIE. The inline stack is built by traversing from the leaf DIE up to the root DIE. This speeds up batch symbolization by ~10X without noticible memory overhead.
Reviewers: dblaikie
Reviewed By: dblaikie
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D32177
llvm-svn: 300742
|
| |
|
|
| |
llvm-svn: 300740
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: PMADDWD can only handle signed short.
Reviewers: mkuper, wmi
Reviewed By: mkuper
Subscribers: andreadb, llvm-commits
Differential Revision: https://reviews.llvm.org/D32236
llvm-svn: 300737
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is inserted directly in the text section. The relocation
for the function ends up resolving to the beginning of the
amd_kernel_code_t header rather than the actual function
entry point.
Also skip some of the comments for initialization
that only makes sense for kernels.
llvm-svn: 300736
|
| |
|
|
|
|
|
|
|
|
|
| |
Patch by Ettore Speziale
Allow TableGen to generate static functions to perform GCC/MS builtin name to
target specific intrinsic ID mapping.
https://reviews.llvm.org/D31150
llvm-svn: 300735
|
| |
|
|
|
|
| |
Added approx. 1100 gfx7 and 1040 gfx8 test cases.
llvm-svn: 300734
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The most common case for a branch condition is
a single use compare. Directly invert the branch
predicate rather than adding a lot of xor i1 true
which the DAG will have to fold later.
This produces nicer to read structurizer output.
This produces some random changes in codegen
due to the DAG swapping branch conditions itself,
and then does a poor job of dealing with those
inverts.
llvm-svn: 300732
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
See http://llvm.org/docs/LangRef.html#non-integral-pointer-type
The NewGVN test does not fail without these changes (perhaps it does
try to coerce pointers <-> integers to begin with?), but I added the
test case anyway.
Reviewers: dberlin
Subscribers: mcrosier, llvm-commits, Prazek
Differential Revision: https://reviews.llvm.org/D32208
llvm-svn: 300730
|
| |
|
|
| |
llvm-svn: 300728
|
| |
|
|
| |
llvm-svn: 300726
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The patch itself is simple: stop discriminating against vectors in visitAnd() and again in
SimplifyDemandedBits().
Some notes for reference:
1. We're not consistent about calls to SimplifyDemandedBits in the various visitXXX functions.
Sometimes, we check if the RHS is a constant first. Other times (like here), we just dive in.
2. I'd like to break the vector shackles in steps for the sake of risk minimization, but we could
make similar simultaneous changes in other places if we think that would be better.
3. I don't know what the intent of the changed tests in this patch was supposed to be, but since
they wiggled in a positive way, I'm just going with that. :)
4. In the rotate tests, note that we can see through non-splat constants. This is a result of D24253.
5. My motivation for being here now is to make D31944 look better, so this is step 1 of N towards
improving the vector codegen in that patch without writing any actual new code.
Differential Revision: https://reviews.llvm.org/D32230
llvm-svn: 300725
|
| |
|
|
| |
llvm-svn: 300724
|
| |
|
|
|
|
| |
While there add some unit tests for uint64_t. Found by ubsan.
llvm-svn: 300721
|
| |
|
|
| |
llvm-svn: 300720
|
| |
|
|
|
|
| |
Stop assuming all functions are kernels.
llvm-svn: 300719
|
| |
|
|
|
|
|
|
| |
This should simplify the call sites, which typically want to tweak one
attribute at a time. It should also avoid creating ephemeral
AttributeLists that live forever.
llvm-svn: 300718
|
| |
|
|
| |
llvm-svn: 300717
|
| |
|
|
|
|
|
|
| |
inline. We should let the compiler see that the fast/slow cases both return *this.
I don't think we chain assignments together very often so this shouldn't matter much.
llvm-svn: 300715
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch simplifies the examples from D31509 and D31927 (PR30630) and catches
the basic identity shuffle tests that Zvi recently added.
I'm not sure if we have something like this in DAGCombiner, but we should?
It's worth noting that "MaxRecurse / RecursionLimit" is only 3 on entry at the moment.
We might want to bump that up if there are longer shuffle chains like this in the wild.
For now, we're ignoring shuffles that have undef mask elements because it's not
clear how those should be handled.
Differential Revision: https://reviews.llvm.org/D31960
llvm-svn: 300714
|
| |
|
|
| |
llvm-svn: 300713
|
| |
|
|
| |
llvm-svn: 300711
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Frequently you you want a bitmask consisting of a specified
number of 1s, either at the beginning or end of a word.
The naive way to do this is to write
template<typename T>
T leadingBitMask(unsigned N) {
return (T(1) << N) - 1;
}
but using this function you cannot produce a word with every
bit set to 1 (i.e. leadingBitMask<uint8_t>(8)) because left
shift is undefined when N is greater than or equal to the
number of bits in the word.
This patch provides an efficient, branch-free implementation
that works for all values of N in [0, CHAR_BIT*sizeof(T)]
Differential Revision: https://reviews.llvm.org/D32212
llvm-svn: 300710
|
| |
|
|
| |
llvm-svn: 300708
|
| |
|
|
|
|
|
|
|
| |
Also, make a few changes to allow using the pass in .mir testcases.
Among other things, change the abbreviation from opt-amode to amode-opt,
because otherwise lit would expand the "opt" part to the full path to
the opt binary.
llvm-svn: 300707
|
| |
|
|
| |
llvm-svn: 300706
|
| |
|
|
|
|
|
| |
The list has a single element 75+% of the time, reservation of 4 elements
is sufficient in 95% of cases.
llvm-svn: 300705
|
| |
|
|
| |
llvm-svn: 300704
|
| |
|
|
| |
llvm-svn: 300702
|
| |
|
|
| |
llvm-svn: 300701
|
| |
|
|
| |
llvm-svn: 300700
|
| |
|
|
| |
llvm-svn: 300698
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
In the current implementation, to find inline stack for an address incurs expensive linear search in 2 places:
* linear search for the top-level DIE
* recursive linear traverse the DIE tree to find the path to the leaf DIE
In this patch, a map is built from address to its corresponding leaf DIE. The inline stack is built by traversing from the leaf DIE up to the root DIE. This speeds up batch symbolization by ~10X without noticible memory overhead.
Reviewers: dblaikie
Reviewed By: dblaikie
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D32177
llvm-svn: 300697
|
| |
|
|
|
|
|
|
|
|
| |
InstSimplify returned the wrong type when simplifying a vector GEP
and we ended up crashing when trying to replace all uses with the
new value. Fixes PR32697.
Differential Revision: https://reviews.llvm.org/D32180
llvm-svn: 300693
|
| |
|
|
|
|
| |
extracted vectors types. NFCI.
llvm-svn: 300688
|
| |
|
|
|
|
| |
It tests registers which are not actually used on AVR.
llvm-svn: 300684
|
| |
|
|
| |
llvm-svn: 300683
|
| |
|
|
|
|
|
|
|
|
|
|
| |
A bunch of tests failed because memory operations have been reordered.
I am unsure which commit changed this behaviour as the AVR build was
failing at that point with an unrelated error.
This commit just reoders some of the CHECK lines in some tests to suit
current llc output.
llvm-svn: 300682
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
[GlobalIsel][X86] support G_TRUNC selection.
Add regbank-select and legalizer tests. Currently legalization of trunc i64 on 32bit platform not supported.
Reviewers: ab, zvi, rovka
Reviewed By: zvi
Subscribers: dberris, kristof.beyls, llvm-commits
Differential Revision: https://reviews.llvm.org/D32115
llvm-svn: 300678
|
| |
|
|
| |
llvm-svn: 300672
|
| |
|
|
| |
llvm-svn: 300671
|
| |
|
|
|
|
| |
This reverts commit r300639, as it broke self-hosting on ARM. PR32709.
llvm-svn: 300668
|
| |
|
|
| |
llvm-svn: 300666
|
| |
|
|
|
|
|
|
| |
Support G_MUL, very similar to G_ADD and G_SUB. The only difference is
in the instruction selector, where we have to select either MUL or MULv5
depending on the target.
llvm-svn: 300665
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes PR32471.
As comment 10 on that bug report highlights
(https://bugs.llvm.org//show_bug.cgi?id=32471#c10), there are quite a
few different defendable design tradeoffs that could be made, including
not representing pointers at all in LLT.
I decided to go for representing vector-of-pointer as a concept in LLT,
while keeping the size of the LLT type 64 bits (this is an increase from
48 bits before). My rationale for keeping pointers explicit is that on
some targets probably it's very handy to have the distinction between
pointer and non-pointer (e.g. 68K has a different register bank for
pointers IIRC). If we keep a scalar pointer, it probably is easiest to
also have a vector-of-pointers to keep LLT relatively conceptually clean
and orthogonal, while we don't have a very strong reason to break that
orthogonality. Once we gain more experience on the use of LLT, we can
of course reconsider this direction.
Rejecting vector-of-pointer types in the IRTranslator is also an option
to avoid the crash reported in PR32471, but that is only a very
short-term solution; also needs quite a bit of code tweaks in places,
and is probably fragile. Therefore I didn't consider this the best
option.
llvm-svn: 300664
|
| |
|
|
|
|
|
|
|
|
|
| |
This showed up in r300535/r300537, which were reverted in r300538 due to
some of the introduced tests in there failing on some bots, due to the
non-determinism fixed in this commit.
Re-committing r300535/r300537 will add 2 tests for the change in this
commit.
llvm-svn: 300663
|